Newtonsoft C#中的嵌套数组

Posted

技术标签:

【中文标题】Newtonsoft C#中的嵌套数组【英文标题】:Nested array in Newtonsoft C# 【发布时间】:2021-08-08 07:47:18 【问题描述】:

我在 C# 中使用 Newtonsoft 包。 我正在尝试显示嵌套 JSON 数组中列出的所有项目。我很难显示姓名 Jennifer Jones 这就是 JSON 字符串的样子

"responseDetails": 
        "pageoffset": 0,
        "size": 950,
        
    ,
    "data": [
        
            "id": 473145,
            "name": "Class of 2000",
            "doc_prog": 
               
                "responseDetails": 
                 
                    "pageoffset": 0,
                    "size": 1,
                    
                 ,
                "data": [
                    
                        "name": "Jennifer Jones"
                    
                ]
            ,

这就是我的班级的样子

public respDetails responseDetails get;放;

    public class respDetails
    
        public int pageoffset  get; set; 
        public string size  get; set; 
    

    public List<datas> data  get; set;  // Top level class attribute

    public class datas
    
        public int id  get; set; 
        public string name__v  get; set;             
        public Programs doc_prog  get; set; 

        public class Programs
        
            public respDetails responseDetails  get; set; 

            public class respDetails
            
                public int pageoffset  get; set; 
                public int size  get; set; 
                
            

            public List<datasprogram> data  get; set;  // Top level class attribute

            public class datasprogram
            
                public string name  get; set; 
            


             

        

这就是我设置 for 循环以列出数组中所有项目的方式

var jRelated = JsonConvert.DeserializeObject<JDocsClass>(strRelated);

            

         
foreach (var num in jRelated.data)
            
                Console.WriteLine(" Page Offset " + num.doc_prog.responseDetails.pageoffset.ToString() + " " + num.doc_prog.data.ToString() );

                
            

这是程序输出

页面偏移量 0 System.Collections.Generic.List`1[storeAPI.JCorrespondenceDocsClass+datas+Programs+datasprogram]

所以我没有显示“Jennifer Jones”,而是显示“System.Collections.Generic.List....”

感谢任何为我指明正确方向的帮助

【问题讨论】:

这能回答你的问题吗? Why am I getting System.Collections.Generic.List`1[System.String] instead of the list's contents? 【参考方案1】:
num.doc_prog.data.ToString()

这里您要打印的是列表!

num.doc_prog.data[0].name

如果列表中至少有一个元素(在您的示例 json 中),这将为您提供所需的结果,如果有多个名称,那么要显示它们,您需要循环 num.doc_prog.data

foreach(datasprogram data in num.doc_prog.data)

  string name = data.name;

【讨论】:

嗨@Akshay Deodhar。谢谢。此解决方案有效

以上是关于Newtonsoft C#中的嵌套数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Newtonsoft.Json 将包含数组数组的 json 对象解析为 C# 中的对象列表?

C# json反序列化 对象中嵌套数组 (转载)

C# Newtonsoft.Json 解析多嵌套json 进行反序列化

C# Newtonsoft.Json 解析多嵌套json 进行反序列化

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json