C# JSON转为实体类和List,以及结合使用

引用

java 复制代码
using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

JSON转实体类

java 复制代码
public class Person
{
	public string Name { get; set; }
	public int Age { get; set; }
	public string Gender { get; set; }
}
java 复制代码
string jsonStr = "{\"name\": \"Tom\", \"age\": 20, \"gender\": \"male\"}";
Person person = JsonConvert.DeserializeObject<Person>(jsonStr);

JSON转List

方法一

json

java 复制代码
{
   "data":{
      [
         {
            "Id":"0",
            "Username":"Vreeswijk",
            "ProfilePicture":"media/user/0.png"
         }
      ],
      [
         {
            "Id":"1",
            "Username":"Mony",
            "ProfilePicture":"media/user/12.png"
         }
      ]
   }
}

实现

java 复制代码
JObject obj = JObject.Parse(json);

//Shou是于json中数组一个元素所对应的类
List<Shou> root = JsonConvert.DeserializeObject<List<Shou>>(obj["data"].ToString());

方法二

json

java 复制代码
{
   "user":{
      [
         {
            "Id":"0",
            "Username":"Vreeswijk",
            "ProfilePicture":"media/user/0.png"
         }
      ]
   },
   "token":{
      [
         {
            "access_token":"myToken1",
            "refresh_token":"myToken2",
            "expires_in":3600,
            "expires_on":1577363756
         }
      ]
   }
}

两个类

java 复制代码
public class Token
{
    public string access_token { get; set; }
    public string refresh_token { get; set; }
    public int expire_in { get; set; }
    public int expire_on { get; set; }
	//省略了构造方法
}

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string ProfilePicture { get; set; }
	//省略了构造方法
}

实现

java 复制代码
var jObject = JObject.Parse(json);
var userPropery = jObject["user"] as JArray;
List<User> userList= new List<User>();

foreach (var property in userPropery )
{
    var propertyList = JsonConvert.DeserializeObject<List<user>>(property.ToString());
	//List集合中的AddRange方法和Add方法的不同之处在于,Add方法为在集合末尾添加单个元素对象,而AddRange方法可以为添加整个目标list集合。
    userList.AddRange(propertyList);
}

结合使用

json

java 复制代码
{
   "number": 1,
   "day": "星期九",
   "user":{
      [
         {
            "Id":"0",
            "Username":"Vreeswijk",
            "ProfilePicture":"media/user/0.png"
         }
      ]
   },
   "token":{
       "access_token":"myToken1",
       "refresh_token":"myToken2",
       "expires_in":3600,
       "expires_on":1577363756
   }
}

两个类

java 复制代码
public class Token
{
    public string access_token { get; set; }
    public string refresh_token { get; set; }
    public int expire_in { get; set; }
    public int expire_on { get; set; }
	//省略了构造方法
}

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string ProfilePicture { get; set; }
	//省略了构造方法
}

public class Data
{
    public int number { get; set; }
    public string day { get; set; }
	public List<User> userList { get; set; }
    public Token token { get; set; }
	//省略了构造方法
}

实现

java 复制代码
var jObject = JObject.Parse(json);

List<User> userList = JsonConvert.DeserializeObject<List<Shou>>(jObject["data"].ToString());
Token token = JsonConvert.DeserializeObject<Token>(jObject["token"]);
int number = int.Parse(jObject["number"]);
string day = jObject["day"].ToString();

Data data = new Data(number,day,userList,token);
相关推荐
放学-别走8 分钟前
免费在线 JSON 工具:格式化、校验、美化、压缩,一站式解决
json·json工具·json 格式化·json 校验·json 压缩·json 美化·json 转译
Data_agent25 分钟前
京东图片搜索商品API,json数据返回
数据库·python·json
superman超哥4 小时前
仓颉语言中字符串常用方法的深度剖析与工程实践
开发语言·后端·python·c#·仓颉
bugcome_com4 小时前
C# 中 ref 与 out 参数传递:核心区别与实战解析
c#
用户4488466710605 小时前
.NET 进阶 —— 深入理解线程(3)ThreadPool 与 Task 入门:从手动线程到池化任务的升级
c#·.net
CreasyChan5 小时前
unity四元数 - “处理旋转的大师”
unity·c#·游戏引擎
wuguan_5 小时前
C#索引器
c#·索引器
聪明努力的积极向上5 小时前
【设计】分批查询数据通用方法(基于接口 + 泛型 + 定点复制)
开发语言·设计模式·c#
悟能不能悟6 小时前
java list怎么进行group
java·python·list
一方热衷.6 小时前
对图像分割的图片进行缩放的同时调整JSON标签
人工智能·计算机视觉·json