【问题标题】:How to read this JSON string?如何读取这个 JSON 字符串?
【发布时间】:2017-02-13 14:29:00
【问题描述】:

如何使用 C# 从下面的 JSON 字符串中选择 Test 中的 Id?

{
  "Test": [
    "Hello",
    {
      "Id": 5
    }
  ]
}

这就是我可以读取 Text 中的内容的方式,但我无法通过执行相同的操作来访问 Id

var test = JObject.Parse(MyJsonString)["Test"];

【问题讨论】:

  • 什么是“相同的东西”? ["Test"][1]["Id"]?
  • 当你调试你的测试变量时你看到了什么?
  • @Ryan 谢谢它的工作原理。但是 [1] 在 ["Test"] 和 ["Id"] 之间做了什么?我之前试过没有 [1] 在中间,但它没有用。介意解释一下吗?
  • Test 定义一个数组。第一个元素(索引 0)是“Hello”,第二个元素(索引 1)是具有属性“Id”的对象。

标签: c# json


【解决方案1】:

在 C# 中处理 JSON 的简洁方法是使用表示 JSON 结构的类并将 JSON 解析为它们。例如,您可以使用json2csharp 来生成这些类。假设您已经生成了一个类 Test 作为解析目标:

using Newtonsoft.Json; 
private static readonly JsonSerializerSettings StrictJsonSettings = new JsonSerializerSettings {
    MissingMemberHandling = MissingMemberHandling.Error
};
Test test = JsonConvert.DeserializeObject<Test>(MyJsonString, StrictJsonSettings);
var jsonId = test[1].Id;

hacky 方法是将结果转换为dynamic:

var parsedJson = JObject.Parse(MyJsonString) as dynamic;
var jsonId = parsedJson.Test[1].Id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多