在没有第三方库的情况下从 JSON 获取动态对象的最佳方法是啥?
Posted
技术标签:
【中文标题】在没有第三方库的情况下从 JSON 获取动态对象的最佳方法是啥?【英文标题】:What's the best way to get a dynamic object from JSoN without third party libraries?在没有第三方库的情况下从 JSON 获取动态对象的最佳方法是什么? 【发布时间】: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 中(我认为在每个页面请求上都会重新创建),所以如果我能保持精简并避免依赖,这是有道理的。
【参考方案1】:
我知道您不想使用第三方库,但 DynamicJson 是最好的库。简单易行
【讨论】:
以上是关于在没有第三方库的情况下从 JSON 获取动态对象的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter-如何在没有 RxDart 的情况下从 Stream<String> 获取最后一个值?
如何让 Json.Net 在不忽略子属性的情况下从 documentDB 序列化/反序列化动态/通用对象?
JSON.NET:如何在没有数组的情况下从DataTable对象中仅序列化一行?
可以在没有javascript的情况下从json输出中获取值吗?