使用 json.net 在列表中返回嵌套的 json 对象

Posted

技术标签:

【中文标题】使用 json.net 在列表中返回嵌套的 json 对象【英文标题】:Return Nested json objects using json.net in a list 【发布时间】:2015-08-18 16:57:37 【问题描述】:

如何使用 json.net 返回嵌套的 json 对象:

我如何设置我的类来返回这个

        [  
            "name": "Jasmine Coots",
            "sex": "female",
            "age": 49,
            "Sons": [
                
                  "name": "Morgan Rhett",
                  "age": 25,
                  "sex": "male"
                ,
                
                  "name": " Jasmine Coots ",
                  "age": 22,
                  "sex": "female"
                ,
                
                  "name": "Joaquin Strother",
                  "age": 17,
                  "sex": "male"
                
              ]
        ,
 
            "name": "Jasmine Coots",
            "sex": "female",
            "age": 49,
            "Sons": [
                
                  "name": "Morgan Rhett",
                  "age": 25,
                  "sex": "male"
                ,
                
                  "name": " Jasmine Coots ",
                  "age": 22,
                  "sex": "female"
                ,
                
                  "name": "Joaquin Strother",
                  "age": 17,
                  "sex": "male"
                
              ]
        
            ]

我需要使用 c# 中的列表、数据表或数据读取器返回一个对象数组,任何如何做到这一点的例子都会很棒

【问题讨论】:

我假设你是从 JSON 转到 C# 对吗? 【参考方案1】:

生活小贴士:Check out this site, it's amazing. 我唯一不特别喜欢的是它不会自动使用常规属性名称 (PascalCase),但它真的很方便。只要拼写正确,您就可以自己进行调整。

现在,您可以使用它生成反序列化这只小狗所需的类。

public class Son

    public string name  get; set; 
    public int age  get; set; 
    public string sex  get; set; 


public class RootObject

    public string name  get; set; 
    public string sex  get; set; 
    public int age  get; set; 
    public List<Son> Sons  get; set; 

用法:

var jsonString = "this is your JSON data";
var root = JsonConvert.DeserializeObject<RootObject>(jsonString);

// do stuff

【讨论】:

在这个例子中,你将如何从 root.Son 列表中获取值? foreach(var s in root.Sons) Console.WriteLine(s.name);

以上是关于使用 json.net 在列表中返回嵌套的 json 对象的主要内容,如果未能解决你的问题,请参考以下文章

Json.NET:将嵌套数组反序列化为强类型对象

Json.NET在返回json序列化字符串时添加反斜杠

json.net 到 System.text.json 对 .net 5 中嵌套类的期望

.net 提取多层嵌套的JSON

JSON.NET JsonIgnore DeserializeObject

从嵌套列表的子数组返回元素的索引