引言
json是我們?cè)诠ぷ髦薪?jīng)常用到的一種數(shù)據(jù)傳輸格式镜雨,開始過程中解析json是我們經(jīng)常面對(duì)的問題。NewtonsoftJson是c#的一套json處理封裝類,它可以高效预伺,方便地幫助我們處理json。
NetonSoftJson提供了完整的使用文檔,文檔地址如下:Json.NET Documentation
NetonSoftJson的不同使用場景
常用方法 序列化和反序列化
這應(yīng)該是我們最常用的倆個(gè)方法了
JsonConvert.DeserializeObject<T>(string json)//反序列化
JsonConvert.SerializeObject(object obj) //序列化
高級(jí)特性
某些字段不想被反序列化
使用JsonIgnore特性標(biāo)簽
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
[JsonIgnore]
public string Sex { get; set; }
}
自定義序列化名稱
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
[JsonProperty(PropertyName = "SepcialSex")]
public string Sex { get; set; }
}
解析字面量字符串
首先構(gòu)建一個(gè)json對(duì)象扭屁,描述了一個(gè)老師的實(shí)體算谈,里面包含老師的基本屬性(名稱、年齡)料滥,所管理的班級(jí)屬性然眼,所管理的班級(jí)的學(xué)生數(shù)組
{
"name": "張三",
"age": "10",
"classroom": {
"name": "1年級(jí)1班",
"desc": "描述"
},
"students": [
{
"age": "小名"
},
{
"age": "小紅"
}
]
}
接下來我們使用Newtonsoftjson解析字符串并獲取到我們需要的信息
string jsonStr = "{\"name\":\"張三\",\"age\":\"10\",\"classroom\":{\"name\":\"1年級(jí)1班\",\"desc\":\"描述\"},\"students\":[{\"name\":\"小名\"},{\"name\":\"小紅\"}]}";
JObject jObject = JObject.Parse(jsonStr);
獲取姓名
Console.WriteLine("name is " + jObject["name"].ToString());
Console.WriteLine("age is " + jObject.GetValue("age").ToString());
獲取班級(jí)信息
Console.WriteLine("classroom name is " + jObject["classroom"]["name"]);
獲取學(xué)生信息
JArray jArray = JArray.Parse(jObject["students"].ToString());
foreach (var arr in jArray)
{
JObject jObj = JObject.Parse(arr.ToString());
string name = jObj["name"].ToString();
Console.WriteLine("student name is " + name);
}
判斷key是否存在
//key 不存在
if (jObject.Property("abc") != null)
{
Console.WriteLine(jObject.Property("abc").Value.ToString());
}
else
{
Console.WriteLine("當(dāng)前key不存在");
}
WebApi下的應(yīng)用
項(xiàng)目開發(fā)中不管是前臺(tái)還是后臺(tái)都會(huì)遇到煩人的null,數(shù)據(jù)庫表中字段允許空值葵腹,則代碼實(shí)體類中對(duì)應(yīng)的字段類型為可空類型Nullable<>高每,如int?,DateTime?践宴,null值字段序列化返回的值都為null鲸匿,前臺(tái)對(duì)應(yīng)字段賦值需要做null值判斷,怎么才能全局把null替換為空阻肩。
.NET Core 處理 WebAPI JSON 返回?zé)┤说膎ull為空
總結(jié)
Json的使用遠(yuǎn)不止于此带欢,作者只是針對(duì)自己到現(xiàn)在為止工作中常見的問題進(jìn)行一個(gè)整理,后續(xù)也會(huì)慢慢補(bǔ)充新的內(nèi)容烤惊,將文章不斷地更新優(yōu)化乔煞。
The END
本文到此結(jié)束,希望對(duì)你有幫助 ??
更多精彩 技術(shù)文章匯總在我的 公眾號(hào)程序員工具集 柒室,持續(xù)更新渡贾,歡迎關(guān)注訂閱收藏。