C#属性值为Json Key Name

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#属性值为Json Key Name相关的知识,希望对你有一定的参考价值。

我有这样的Json:

  {
  "Result": {
    "Bruce": {
      "City": "Gotham",
      "Age": 43
    },
    "Clark": {
      "City": "Metro",
      "Age": 43
    }
  }
}

当我反序列化它时,我需要以下类结构

    public class Clark
    {
        public string City { get; set; }
        public int Age { get; set; }
    }

    public class Bruce
    {
        public string City { get; set; }
        public int Age { get; set; }
    }

    public class Result
    {
        public Bruce Bruce { get; set; }
        public Clark Clark { get; set; }

    }

    public class RootObject
    {
        public Result Result { get; set; }
    }

这意味着我需要创建特定的类,如Bruce,Clark等。是否可以反序列化这个Json而不是单独的Bruce,Clark等,我只有一个这样的Person类

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

        public int Age { get; set; }
    }
    public class Result
    {           
        public List<Person> Persons { get; set; }
    }

    public class RootObject
    {
        public Result Result { get; set; }
    }

这样JSON变得像:

{
  "Result": {
    "Persons": [
      {
        "Name": "Bruce",
        "City": "Gotham",
        "Age": 43
      },
      {
        "Name": "Clark",
        "City": "Metro",
        "Age": 43
      }
    ]
  }
}
答案

你的Json描述了一个名为Result的属性的对象,即Dictionary<string, Person>

所以你的类只需要看起来像:

public class Person
{
    public string Name { get; set; }
    public string City { get; set; }
    public int Age { get; set; }
}

public class RootObject
{
    public Dictionary<string, Person> Result { get; set; }
}

以上是关于C#属性值为Json Key Name的主要内容,如果未能解决你的问题,请参考以下文章

gson实体转json时当字段值为空时,json串中就不存在该属于,请问如何在值为空的时候也保留该字符串

YASnippet - emacs 的代码片段管理工具

java 与 JSON

json串中怎么把值为null的属性过滤掉

java字段值为null,转json后不存在该字段对应的key

解决JSON返回HashMap字段值为null不显示key的问题