苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 11087|回复: 1

[学生提问] C#反序列化实体类,json多嵌套如何遍历一层层获取列表指定的值?

[复制链接]
发表于 2023-5-26 23:20:03 | 显示全部楼层 |阅读模式
本帖最后由 wfr666 于 2023-5-26 23:23 编辑

[C#] 纯文本查看 复制代码
Class1类
public class Root1
{
    public List<List<object>> n { get; set; }   //已转换的Json实体类
}




引用:
using System.IO;
using System.Net;
using Newtonsoft.Json;



private void button2_Click(object sender, EventArgs e)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(@"https://phoile.tender88.com/sports-service/sv/odds/events?mk=1&sp=29&ot=2&btg=1&o=1&lg=&ev=&d=&l=100&v=0&me=0&more=false&c=CN&tm=0&g=QQ%3D%3D&pa=0&cl=100&_g=1&pimo=0%2C1%2C8%2C3%2C6%2C7%2C4%2C5&inl=false&_=1671623147061&locale=zh_CN"));
            request.Method = "GET";  //请求的方法
            request.Accept = "application/json, text/javascript, */*; q=0.01"; //可以接受哪些类型的文件
            request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9"); //头部信息添加语言
            request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"; //访问验证
            request.ContentType = "application/json;charset=UTF-8"; //识别编码格式UTF-8
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //响应,强制转换
            Stream myResponseStream = response.GetResponseStream();   //获取流,需要引用命名空间IO
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);  //流读取器,观察者模式


            string getJson = myStreamReader.ReadToEnd();
            listView2.Items.Clear();
            Root1 rt1 = JsonConvert.DeserializeObject<Root1>(getJson);

             StringBuilder sb1 = new StringBuilder();
            foreach (object item in rt1.n)   //遍历第一层?
            {
                if (item is List<object> innerList)
                {
                    foreach (object innerItem in innerList)    //遍历第二层?
                    {
                        if (innerItem is List<object> nestedList)
                        {
                            object thirdValue = nestedList[0];    //获取指定的值,为何提示"没有"?
                            sb1.Append(thirdValue.ToString());                         
                        }
                        else
                        {
                            sb1.Append("没有");
                        }
                        sb1.Append(Environment.NewLine);
                    }

                }
            }
            textBox1.Text = sb1.ToString();
           myStreamReader.Close();     //关闭
            myStreamReader.Dispose();   //释放
            myResponseStream.Close();   //关闭流
            myResponseStream.Dispose(); //释放流
        }
    }
    }


https://phoile.tender88.com/spor ... 147061&locale=zh_CN

以上链接是网页接口的json数据,太多嵌套了.

如图: 1.png



遍历索引列表里,再遍历里面的列表, 一层一层的遍历, 假如我要获取图右边里的值"3.200",该如何实现?



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2023-5-27 16:19:03 | 显示全部楼层
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-25 02:51

© 2014-2021

快速回复 返回顶部 返回列表