【问题标题】: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 中(我认为在每个页面请求上都会重新创建),所以如果我能保持精简并避免依赖,这是有道理的。

标签: c# asp.net json api serialization


【解决方案1】:

我知道您不想使用第三方库,但 DynamicJson 是最好的库。简单易行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2012-05-04
    • 2021-11-28
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多