在没有第三方库的情况下从 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输出中获取值吗?

在没有任何库的情况下从多个图像用 Javascript 制作 GIF

如何在没有 Linq 的情况下从列表中获取一些对象?