【发布时间】:2012-02-23 13:56:24
【问题描述】:
我正在寻找将 JSON 转换为 dynamic 对象的最简单/最佳方法,最好没有任何第三方依赖项(出于各种原因)。目前,我有以下,但它需要从C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies 引用System.Web.Helpers,感觉有点讨厌。
var webClient = new WebClient();
var jsonSerializer = new JavaScriptSerializer();
var url = string.Format(GetBoardUrl, TrelloDevKey, TrelloTestAuthToken);
var result = webClient.DownloadString(url);
var json = jsonSerializer.Deserialize<dynamic>(result);
dynamic board = new DynamicJsonObject(json);
Console.WriteLine(board.id);
没有System.Web.Helpers 引用,我只能得到json 变量,它有效,但我必须访问字典中的属性(例如board["id"])。我可以忍受这个,但我(还)还没有准备好相信我不能用仅框架的方法来做到这一点! :D
【问题讨论】:
-
我不知道这是否与您的
System.Web.Helpers解决方案相同,但它对我来说效果很好:drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/22/… -
据我所知,唯一的“System.*”JSON 序列化程序是 System.Web.Helpers.dll 中的序列化程序。但是,如果您只是不想使用 3rd-party 库,您总是可以编写自己的解析器吗? JSON 的语法是quite straightforward。
-
发现这个,可以通过 NuGet 安装的单个 .cs 文件 - 似乎运行良好:nuget.org/packages/DynamicJson
-
那么您到底想通过不使用任何标准 JSON 包来做什么?试图消除 .NET 中最常见的 DLL 地狱点之一?
-
@ChrisMarisic 这不是一个要求,只是一个偏好。这是一个 FogBugz 插件,它被加载到另一个 AppDomain 中(我认为在每个页面请求上都会重新创建),所以如果我能保持精简并避免依赖,这是有道理的。
标签: c# asp.net json api serialization