.net - 将 JSON 解析为 .NET 4.0 中的非对象?

标签 .net json .net-4.0

.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 documentation .我不知道它是否支持 JSON 解析。

    最佳答案

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

    您还可以分配 JsonConvert.DeserializeObject 的结果至 dynamic并使用鸭子打字

    一些例子:

  • Deserialize json with Json.NET
  • Parsing JSONObject

  • 例子

    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"];
    

    关于.net - 将 JSON 解析为 .NET 4.0 中的非对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652763/

    相关文章:

    c# - 无法捕获 MS Chart 控件异常

    .net - 点积函数

    .net - 从列表中过滤或删除(T 个)

    javascript - 将动态数据传递到 Power BI Embedded

    python - 将 json 字符串插入表中

    javascript - 如何从 JSON 响应中读取数据

    c# - 当 SUIT 利用任务并行库时使用 Mocks 进行单元测试

    vb.net - HttpWebRequest.BeginGetResponse block ;异步获取 HttpWebResponse 的正确方法是什么?

    c# - 继承和new关键字

    c# - 如何判断子线程是否完成