4

.NET 4.0 是否有 JSON 解析器?


理想情况下是这样的:

String jsonText = GetTheJsonFromTheInternet();
var json = JsonValue.Parse(jsonText);

现在我有一组嵌套的键值对。

使用 JSON.net

想要的是必须创建一组对象来匹配 JSON。我询问解析JSON,而不是反序列化 JSON。你可以假装这是因为我不知道 JSON 的结构。

与解析 XML 的方式类似:

String xmlText = GetTheXmlFromTheInternet();
XmlDocument doc = new XmlDocument();
doc.LoadXml(XmlText);

现在我有一组嵌套的名称-值-属性。您无需创建对象来表示 XML DOM 树;您解析一个 XML 字符串,现在很容易导航和查找内容。

为什么不直接使用 JsonValue.Parse()?

因为:

  • JsonValue(在 中找到System.Json.dll)直到 .NET Framework 4.5 才可用。
  • 并且 Visual Studio 2010 不能以 .NET Framework 4.5 为目标。(仅限 Visual Studio 2012)
  • 和 Visual Studio 2012 需要 Windows 8

编写我自己的 JSON 解析器需要几天的时间(要让它正确且良好)。

我浏览了JSON.net 文档。我不知道它是否支持 JSON 解析。

4

1 回答 1

5

使用Newtonsoft.Json.JsonConvert.DeserializeObject. 它将返回JObjectJArray。您可以对它们使用所有 Linq 技巧。

您还可以将结果分配JsonConvert.DeserializeObjectdynamic并使用鸭子类型

一些例子:

例子

String jsonText = 
    @"{
        ""files"":[{
            ""url"":""http://us.battle.net/auction-data/x/auctions.json"",
            ""lastModified"":1369051860000
        }]
    }";

JToken data = JObject.Parse(jsonText);

String url = (String)data["files"][0]["url"];
Int64 lastModified = (Int64)data["files"][0]["lastModified"];
于 2013-05-20T15:25:27.527 回答