C#中JSON轉(zhuǎn)為實(shí)體類(lèi)和List以及結(jié)合使用
引用
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
JSON轉(zhuǎn)實(shí)體類(lèi)
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
string jsonStr = "{\"name\": \"Tom\", \"age\": 20, \"gender\": \"male\"}";
Person person = JsonConvert.DeserializeObject<Person>(jsonStr);
JSON轉(zhuǎn)List
方法一
json
{
"data": [
{
"Id":"0",
"Username":"Vreeswijk",
"ProfilePicture":"media/user/0.png"
},
{
"Id":"1",
"Username":"Mony",
"ProfilePicture":"media/user/12.png"
}
]
}
實(shí)現(xiàn)
JObject obj = JObject.Parse(json); //Shou是于json中數(shù)組一個(gè)元素所對(duì)應(yīng)的類(lèi) List<Shou> root = JsonConvert.DeserializeObject<List<Shou>>(obj["data"].ToString());
方法二
json:
{
"user":{
[
{
"Id":"0",
"Username":"Vreeswijk",
"ProfilePicture":"media/user/0.png"
}
]
},
"token":{
[
{
"access_token":"myToken1",
"refresh_token":"myToken2",
"expires_in":3600,
"expires_on":1577363756
}
]
}
}
兩個(gè)類(lèi):
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; }
//省略了構(gòu)造方法
}
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string ProfilePicture { get; set; }
//省略了構(gòu)造方法
}
實(shí)現(xiàn)
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方法為在集合末尾添加單個(gè)元素對(duì)象,而AddRange方法可以為添加整個(gè)目標(biāo)list集合。
userList.AddRange(propertyList);
}
結(jié)合使用
json:
{
"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
}
}
兩個(gè)類(lèi):
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; }
//省略了構(gòu)造方法
}
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string ProfilePicture { get; set; }
//省略了構(gòu)造方法
}
public class Data
{
public int number { get; set; }
public string day { get; set; }
public List<User> userList { get; set; }
public Token token { get; set; }
//省略了構(gòu)造方法
}
實(shí)現(xiàn)
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);
總結(jié)
到此這篇關(guān)于C#中JSON轉(zhuǎn)為實(shí)體類(lèi)和List以及結(jié)合使用的文章就介紹到這了,更多相關(guān)C# JSON轉(zhuǎn)實(shí)體類(lèi)和List內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#讀取與寫(xiě)入txt文件內(nèi)容的實(shí)現(xiàn)方法
在 C# 中讀取和寫(xiě)入文本文件內(nèi)容是一個(gè)常見(jiàn)的任務(wù),本文主要介紹了使用幾種不同方法讀取和寫(xiě)入文本文件的示例,并通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-08-08
利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的全過(guò)程記錄
做web開(kāi)發(fā)的同學(xué),經(jīng)常會(huì)用到各種chrome瀏覽器插件,那么我們寄幾怎么開(kāi)發(fā)一個(gè)插件呢(其實(shí)是瀏覽器擴(kuò)展)?這篇文章主要給大家介紹了關(guān)于利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的相關(guān)資料,需要的朋友可以參考下2021-07-07
Unity實(shí)現(xiàn)角色受擊身體邊緣發(fā)光特效
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)角色受擊身體邊緣發(fā)光特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
解決C# X64應(yīng)用程序中讀取WParam溢出的問(wèn)題
C#應(yīng)用程序是AnyCPU的,在一段處理鼠標(biāo)滾輪WM_MOUSEWHEEL的代碼里碰到溢出的問(wèn)題OverflowException2013-04-04
基于C# MBG 擴(kuò)展方法類(lèi)庫(kù)的使用詳解
本篇文章對(duì)C# MBG 擴(kuò)展方法類(lèi)庫(kù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

