首页 > 解决方案 > Newtonsoft C#中的嵌套数组

问题描述

我在 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"
                    }
                ]
            },

这就是我的班级的样子

公共 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 ....”

我很感激任何帮助指出我正确的方向

标签: c#arraysapinestedjson.net

解决方案


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;
}

推荐阅读