.net 解析嵌套JSON

JSON格式文件如下:我们是要取出msgJsoncontent里面GeneralReportInfo下serviceData中的totalUseValue数据

{
    "responseCode": "100000",
    "message": "运行正确",
    "result": {
        "pageNum": 1,
        "pageSize": 10,
        "size": 10,
        "startRow": 1,
        "endRow": 10,
        "total": 27,
        "pages": 3,
        "list": [{
            "id": "7bcba4b7508a433db7664ec9f60fef2a",
            "registTime": "2019-07-01 23:49:17",
            "updateTime": "2019-07-01 23:49:48",
            "gmId": "9999999000008888",
            "concentratorNum": "",
            "deviceType": "",
            "subdeviceType": "",
            "anysType": 0,
            "port": 0,
            "ip": "",
            "msgJsoncontent": "{\"identifier\":\"9000008888\",\"hasMore\":0,\"mid\":598,\"msgType\":\"deviceReq\",\"data\":[{\"serviceId\":\"GeneralReportInfo\",\"serviceData\":{\"dfCount\":\"0\",\"dfId\":\"0\",\"connType\":\"0\",\"deviceType\":\"2\",\"subDeviceType\":\"12\",\"companyNo\":\"999999\",\"meterType\":\"0000\",\"dataType\":\"00\",\"totalUseValue\":\"7.90\",\"recentFreezeValue\":\"7.90\",\"deviceStatus\":{\"loseTrack\":\"0\",\"valueLack\":\"0\",\"leakAlarm\":\"0\",\"remoteCloseValve\":\"1\",\"vibrationStop\":\"0\",\"buttonMode\":\"0\",\"deviceLock\":\"0\",\"isAccount\":\"1\",\"breakLine\":\"0\",\"singleCount\":\"0\",\"magneticInterference\":\"0\",\"superFlow\":\"0\",\"factoryMode\":\"1\",\"pressureLack\":\"0\",\"valveState\":\"1\"},\"deviceTime\":\"20190701T234910Z\",\"voltage\":\"4.91\",\"identityCode\":\"89860317492039663768\",\"moduleIMEI\":\"863703038784190\",\"signalIntensity\":\"2\",\"signalStrength\":-1194,\"signalPower\":-1088,\"signalCellID\":163869138,\"signalECL\":1,\"signalSNR\":7,\"signalPCI\":295,\"linkQuality\":-136,\"softWareVer\":\"9\",\"firmwareVer\":\"R2027\"}},{\"serviceId\":\"FreezeDataReportInfo\",\"serviceData\":{\"dfCount\":\"0\",\"dfId\":\"0\",\"connType\":\"0\",\"deviceType\":\"2\",\"subDeviceType\":\"12\",\"companyNo\":\"999999\",\"freezeCount\":\"0\",\"freezeDatas\":null}}]}",
            "msgContent": "BB01025602080C9999999000008888000000006000A8B670678C9E3DC24A5CF51A67E0003E8C6F3CF513378103CF2B221B965DCA91F5DD1A7834337C1FA61DE71B04CC54F916701A5A77CF0544A2FEACA2DD6942BBB9718B7CDF5EAF5B2E63A5FE28E3794644F3EEA39D6CAD30A08199991C43DC25626C",
            "hasTestHang": 0,
            "callbackResult": 1,
            "msgDeviceType": 0,
            "linkType": 0
        },{
            "id": "e33b54d057c34f10bfecfe55d2e9684d",
            "registTime": "2019-07-01 15:49:11",
            "updateTime": "2019-07-01 15:49:12",
            "gmId": "9999999000008888",
            "concentratorNum": "",
            "deviceType": "",
            "subdeviceType": "",
            "anysType": 0,
            "port": 0,
            "ip": "",
            "msgJsoncontent": "{\"identifier\":\"9000008888\",\"hasMore\":0,\"mid\":586,\"msgType\":\"deviceReq\",\"data\":[{\"serviceId\":\"GeneralReportInfo\",\"serviceData\":{\"dfCount\":\"0\",\"dfId\":\"0\",\"connType\":\"0\",\"deviceType\":\"2\",\"subDeviceType\":\"12\",\"companyNo\":\"999999\",\"meterType\":\"0000\",\"dataType\":\"00\",\"totalUseValue\":\"7.90\",\"recentFreezeValue\":\"7.90\",\"deviceStatus\":{\"loseTrack\":\"0\",\"valueLack\":\"0\",\"leakAlarm\":\"0\",\"remoteCloseValve\":\"1\",\"vibrationStop\":\"0\",\"buttonMode\":\"0\",\"deviceLock\":\"0\",\"isAccount\":\"1\",\"breakLine\":\"0\",\"singleCount\":\"0\",\"magneticInterference\":\"0\",\"superFlow\":\"0\",\"factoryMode\":\"1\",\"pressureLack\":\"0\",\"valveState\":\"1\"},\"deviceTime\":\"20190701T154905Z\",\"voltage\":\"5.39\",\"identityCode\":\"89860317492039663768\",\"moduleIMEI\":\"863703038784190\",\"signalIntensity\":\"3\",\"signalStrength\":-1139,\"signalPower\":-1069,\"signalCellID\":80010836,\"signalECL\":1,\"signalSNR\":93,\"signalPCI\":183,\"linkQuality\":-111,\"softWareVer\":\"9\",\"firmwareVer\":\"R2027\"}},{\"serviceId\":\"FreezeDataReportInfo\",\"serviceData\":{\"dfCount\":\"0\",\"dfId\":\"0\",\"connType\":\"0\",\"deviceType\":\"2\",\"subDeviceType\":\"12\",\"companyNo\":\"999999\",\"freezeCount\":\"1\",\"freezeDatas\":[{\"freezeDate\":\"20190701T150000Z\",\"freezeValue\":\"7.90\"}]}}]}",
            "msgContent": "BB01024A02080C9999999000008888000000006000544E03707B118B43F50857CFED37915A97599E43DD2E90FDD58B0D41820A81DD7390E567D81CD14E5ACF7330A1238A89141DB5F37AD1C70876BE7DA16F50BB85FA930EA0E8D1DDABFB8F91528D762A55B706CFC565D19B8C75B333D6FFE81F7FAB4E",
            "hasTestHang": 0,
            "callbackResult": 1,
            "msgDeviceType": 0,
            "linkType": 0
        }],
        "firstPage": 1,
        "prePage": 0,
        "nextPage": 2,
        "lastPage": 3,
        "isFirstPage": true,
        "isLastPage": false,
        "hasPreviousPage": false,
        "hasNextPage": true,
        "navigatePages": 8,
        "navigatepageNums": [1, 2, 3]
    },
    "args": ""
}

第一步:

responsecontent为上文的文件

将JSON字符串JObject格式化:JObject job = JObject.Parse(responsecontent);

 

第二步:将list里面的数据Jarray化: JArray array2 = JArray.Parse(job["result"]["list"].ToString());

 

循环array2得到我们想要的数据,命名比较随意请见谅,以下是具体的解析代码:

                        for (int j = 0; j < array2.Count; j++)
                        {
                            dr = dt.NewRow();
                            JObject jObject = JObject.Parse(array2[j].ToString());
                            
                            string ss = jObject["msgJsoncontent"].ToString();
                            JObject js = JObject.Parse(ss);
                            
                            string sss = js["data"].ToString();
                            JArray array = JArray.Parse(sss);
                            //通过lamda表达式选择data里面serviceId=GeneralReportInfo再获取下面的totalUseValue值
                            foreach (var item in array.Where(a => a["serviceId"].ToString() == "GeneralReportInfo"))
                            {
                                JObject a = JObject.Parse(item["serviceData"].ToString());
                                string totalUseValue  = a["totalUseValue"].ToString();//此处我们就得到了我们想要的数据 
                                
                            } 
                         }
View Code

 

转载于:https://www.cnblogs.com/wofeiliangren/p/11282857.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Unity中使用LitJson解析嵌套JSON可以通过JsonMapper.ToObject方法来实现。首先,你需要将JSON字符串转换为JsonData对象,然后可以通过索引或键值对的方式来获取嵌套JSON数据。例如,你可以使用以下代码来解析嵌套JSON: ```csharp string json = "{\"name\":\"John\",\"info\":{\"age\":25,\"sex\":\"male\"}}"; JsonData jsonData = JsonMapper.ToObject(json); string name = jsonData\["name"\].ToString(); int age = (int)jsonData\["info"\]\["age"\]; string sex = jsonData\["info"\]\["sex"\].ToString(); Debug.Log(name + " " + age + " " + sex); ``` 在上述代码中,我们首先将JSON字符串转换为JsonData对象,然后通过索引获取顶层的"name"属性的值,以及嵌套的"info"属性下的"age"和"sex"属性的值。最后,我们使用Debug.Log输出这些值。这样就可以解析嵌套JSON数据了。\[2\] #### 引用[.reference_title] - *1* *3* [【教程】使用 LitJson 处理 Json 数据信息](https://blog.csdn.net/qq_51026638/article/details/121374233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#使用LitJson解析JSON](https://blog.csdn.net/zhiqingcn/article/details/125258200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值