【问题标题】:JSON decoding in c# [closed]c#中的JSON解码[关闭]
【发布时间】:2010-11-22 23:57:31
【问题描述】:

如何在 c# 中解码 json 响应?

【问题讨论】:

  • “数组”:你说的是哪个数组?
  • 还可以查看stackoverflow.com/questions/2246694/… 底部引用Json.Decode() 的示例之一,来自System.Web.Helpers,我过去曾成功使用过。
  • 结束一个问题,4 年后,等等……就是这样。

标签: c# json


【解决方案1】:

查看DataContractJsonSerializer。您必须以 .NET 3.5 为目标,这意味着非常需要 Visual Studio 2008。 Here's a good blog post 关于使用 Json 数据合约序列化器。

【讨论】:

【解决方案2】:

【讨论】:

  • 我正在输入 check out 但我输错了,然后又做了整行。大声笑
  • 谢谢大家.. 我对 .net 不太熟悉,需要使用 json 数据。因此,如果有人可以提供代码示例说明如何解码 json 数据,那就太好了
【解决方案3】:

除了上面3.5的方法,如果你安装ASP.NET 2.0 AJAX Extensions 1.0(2.0是框架版本),你会得到System.Web.Script.Serialization.JavaScriptSerializer类,可以编解码json。

【讨论】:

    【解决方案4】:

    .NET 集成类有其优点。 但它们也有缺点。

    例如,DataContractJsonSerializer 在 .NET 2.0 中不可用,System.Web.Extensions 需要管理员权限才能安装它(在 NET 2.0 中 - 如果您没有网站项目,您可以本地复制它)而且它没有在 SilverLight 和 WindowsPhone 中工作。 如果您有一个网站项目,则需要将 System.Web.Extensions 程序集复制到您的项目中,然后从 GAC 中删除它们,否则 VisualStudio 不理解它必须在本地复制它们。

    但更重要的是,如果您使用几乎任何 JavaScript 库,例如SlickGrid(AJAX 网格),你会偶然发现这个有效的 JavaScript 对象(但它是无效的 JSON,因为 fnFormatDate_DE 是一个函数调用而不是文本,它缺少引号):

    FormatterCallback :
    {
         name : "DateFormatter_DE"
         func:  fnFormatDate_DE(val)
    }
    

    没有机会使用任何 .NET 集成类来序列化它(因为它是无效的 JSON)。此外,它们在 SilverLight、Windows Phone 和 WindowsRT 中的性能、可用​​性方面也有所不足。它们既不是开源也不是 MIT 许可证。它们不支持缩进(人类可读的 JSON),它们不能序列化 DataTable,并且它们在循环引用方面存在问题。你不能用它们处理序列化错误,不能序列化枚举到它们的名字,你不能切换日期格式(好吧,这不是一个真正的问题,因为 MS 日期格式是 safari 唯一的日期格式废话理解[它不理解 ISO]),并且它们既不序列化 nHibernate 也不序列化实体......

    但最重要的是,如果您从 .NET 2.0 升级到 4.0,您不会想要切换您的库或调整项目引用,如果您想在 SilverLight/Windows 中使用某些代码,您也不会想要重写您的代码电话,你不想写一个函数来美化 JSON,如果你想看看你是否得到了正确的类,你也不想写你自己的方法来去掉引号,因为微软的库可以' t 处理无效的 JSON。

    此外,Microsoft 的库性能低下,无法序列化为 BSON(用于 MongoDB 等 NoSQL 数据库)。
    因此,出于所有这些原因,您最好选择 NewtonSoft JSON (JSON.NET)。
    它是免费且开源的(MIT license,而不是 GPL)。
    这里有一个很好的比较矩阵:
    http://james.newtonking.com/pages/json-net.aspx

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多