【问题标题】:How to parse json with different key names and similar objects in each key?如何解析每个键中具有不同键名和相似对象的json?
【发布时间】:2015-12-03 15:42:27
【问题描述】:

我有这个 JSON:

  {
  "response": {
     "PEOPLE": {
      "PERSON1": {
        "name": "jon",
        "last": "jony"
      },
      "PERSON2": {
        "name": "mike",
        "last": "mikey"
      }
    }
  }   
 }

如何将其解析为关键字为PERSONX 字符串的字典?

我是 C# 新手,知道在 Java 中我需要一个类,其中内部键是:"person_name"...

【问题讨论】:

  • 你查看过 Newtonsoft.Json 吗?
  • 不,我查看了 System.Runtime.Serialization.. 我认为这是我需要的
  • 为什么它被标记为'json.net'呢?
  • 对于 Json。 Newtonsoft.Json 将成为你的朋友
  • 阅读相关下右侧的任何/所有问题

标签: c# json parsing json.net


【解决方案1】:

我建议创建一个类,因为它更容易工作并且你可以完全控制它。

public class Response
{
    public Dictionary<string,Person> People{ get; set; }
}

public class Person
{
    public string Name { get; set; }
    public string Last { get; set; }
}

当属性具有不同的名称时,我使用 Dictionary,然后您可以使用 LINQ 来访问它们。

获取字典的值:

var valueOfFirstPeopleElement = People.FirstOrDefault().Value;

这样你就有了 person 类。

为了将 json 解析为此类,您必须使用 json 转换器进行反序列化。

Response response = JsonConvert.DeserializeObject<Response>(jsonData);

相反,你需要序列化。

string jsonData = JsonConvert.SerializeObject(response);

【讨论】:

  • 虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码的答案没有用处。
猜你喜欢
  • 1970-01-01
  • 2020-05-17
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多