吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1159|回复: 14
收起左侧

[求助] C# Json遍历

[复制链接]
hl301 发表于 2022-6-18 22:39
本帖最后由 hl301 于 2022-6-18 22:41 编辑

{
"code": 1,
"msg": "success",
"body": {
"periods": [
{
"id": 103281,
"name": "典礼",
"periodStatus": "finish",
"beginDate": 1648209600000,
"endDate": 1648215000000,
"isFreeStudy": false,
"sort": 1
},
{
"id": 103282,
"name": "入门",
"periodStatus": "finish",
"beginDate": 1648296000000,
"endDate": 1648301400000,
"isFreeStudy": false,
"sort": 2
},
{
"id": 103283,
"name": "辅导",
"periodStatus": "finish",
"beginDate": 1648641600000,
"endDate": 1648647000000,
"isFreeStudy": false,
"sort": 3
},



C#引用Newtonsoft.Json如何获取所有body.periods.Name数据呢
查找了百度还是没解决,特来向论坛各位大佬求助。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jidesheng6 发表于 2022-6-18 23:18
引入他的linq然后使用jobj和jtoken即可
 楼主| hl301 发表于 2022-6-18 23:20
jidesheng6 发表于 2022-6-18 23:18
引入他的linq然后使用jobj和jtoken即可

大佬,能帮忙给写下么?因为我在百度好长时间,实在没辙跑来论坛问了,拜托了。
jidesheng6 发表于 2022-6-18 23:23
hl301 发表于 2022-6-18 23:20
大佬,能帮忙给写下么?因为我在百度好长时间,实在没辙跑来论坛问了,拜托了。

简单来说,就是先使用using Newtongsof.Json.Linq
然后使用jobject.parse来把你的字符串转换为json数据,每个数据都是jtoken有的可以是jarray,我有点记不清了,最近没用过它了,可能记不清了,但是你在百度上去搜索这个类库加上Linq和Jobject应该可以找到相关的例子。
 楼主| hl301 发表于 2022-6-18 23:30
jidesheng6 发表于 2022-6-18 23:23
简单来说,就是先使用using Newtongsof.Json.Linq
然后使用jobject.parse来把你的字符串转换为json数据 ...

谢了,我查查。
cdj68765 发表于 2022-6-18 23:45
你这个Json不全,针对你现在的这个Json,可以用的代码是
[C#] 纯文本查看 复制代码
        static Root JsonDeserialize(string JsonString)
        {
            return Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(JsonString);
        }
        public class Root
        {
            /// <summary>
            ///
            /// </summary>
            public int code { get; set; }

            /// <summary>
            ///
            /// </summary>
            public string msg { get; set; }

            /// <summary>
            /// body
            /// </summary>
            public Body body { get; set; }

            public class Body
            {
                /// <summary>
                /// periods
                /// </summary>
                public List<Periods> periods { get; set; }

                public class Periods
                {
                    /// <summary>
                    ///
                    /// </summary>
                    public int id { get; set; }

                    /// <summary>
                    /// 典礼
                    /// </summary>
                    public string name { get; set; }

                    /// <summary>
                    ///
                    /// </summary>
                    public string periodStatus { get; set; }

                    /// <summary>
                    ///
                    /// </summary>
                    public long beginDate { get; set; }

                    /// <summary>
                    ///
                    /// </summary>
                    public long endDate { get; set; }

                    /// <summary>
                    ///
                    /// </summary>
                    public string isFreeStudy { get; set; }

                    /// <summary>
                    ///
                    /// </summary>
                    public int sort { get; set; }
                }
            }
        }

对了,你这个Json末尾我加了一点,不然解析不出来
[Asm] 纯文本查看 复制代码
{
"code": 1,
"msg": "success",
"body": {
"periods": [
{
"id": 103281,
"name": "典礼",
"periodStatus": "finish",
"beginDate": 1648209600000,
"endDate": 1648215000000,
"isFreeStudy": false,
"sort": 1
},
{
"id": 103282,
"name": "入门",
"periodStatus": "finish",
"beginDate": 1648296000000,
"endDate": 1648301400000,
"isFreeStudy": false,
"sort": 2
},
{
"id": 103283,
"name": "辅导",
"periodStatus": "finish",
"beginDate": 1648641600000,
"endDate": 1648647000000,
"isFreeStudy": false,
"sort": 3
}
]
}
}


方法是 先去https://www.toolscat.com/json/json-csharp,把你的Json粘贴进去,如果格式正确的话,就能生成实体类
把实体类一个个复制到代码里面去
然后调用Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(JsonString);就能反而你要的数据了
ykrne 发表于 2022-6-18 23:50
先建模,然后直接 反序列化成这个模型就行了

另外建议用 System.Text.Json
 楼主| hl301 发表于 2022-6-18 23:55
cdj68765 发表于 2022-6-18 23:45
你这个Json不全,针对你现在的这个Json,可以用的代码是
[mw_shl_code=csharp,true]        static Root J ...

我是通过VS将json粘贴为实体类,还是无法取出,还是谢过兄弟了。
 楼主| hl301 发表于 2022-6-18 23:56
ykrne 发表于 2022-6-18 23:50
先建模,然后直接 反序列化成这个模型就行了

另外建议用 System.Text.Json

哥们,能否给个例程。
troybug 发表于 2022-6-19 00:02
我用的LitJson,不用建实体类,将json作为字符串解析就行了
[C#] 纯文本查看 复制代码
using System;
using LitJson;

public class Program {
	public static void Main() {
		string json = @"{
			'code': 1,
			'msg': 'success',
			'body': {
				'periods': [
					{
						'id': 103281,
						'name': '典礼'
					},
					{
						'id': 103282,
						'name': '典礼2'
					}
				]
			}
		}";

		var res = JsonMapper.ToObject(json);

		for (var i = 0; i < res["body"]["periods"].Count; i++) {
			Console.WriteLine(res["body"]["periods"][i]["name"]);
		}

	}
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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