關於我
個人博客 | 歡迎關注html
引言
json是咱們在工做中常常用到的一種數據傳輸格式,開始過程當中解析json是咱們常常面對的問題。NewtonsoftJson是c#的一套json處理封裝類,它能夠高效,方便地幫助咱們處理json。程序員
NetonSoftJson提供了完整的使用文檔,文檔地址以下:Json.NET Documentation數據庫
NetonSoftJson的不一樣使用場景
經常使用方法 序列化和反序列化
這應該是咱們最經常使用的倆個方法了json
JsonConvert.DeserializeObject<T>(string json)//反序列化 JsonConvert.SerializeObject(object obj) //序列化
高級特性
參考文章 Newtonsoft.Json高級用法c#
某些字段不想被反序列化
使用JsonIgnore特性標籤數組
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; } }
解析字面量字符串
首先構建一個json對象,描述了一個老師的實體,裏面包含老師的基本屬性(名稱、年齡),所管理的班級屬性,所管理的班級的學生數組工具
{ "name": "張三", "age": "10", "classroom": { "name": "1年級1班", "desc": "描述" }, "students": [ { "age": "小名" }, { "age": "小紅" } ] }
接下來咱們使用Newtonsoftjson解析字符串並獲取到咱們須要的信息學習
string jsonStr = "{\"name\":\"張三\",\"age\":\"10\",\"classroom\":{\"name\":\"1年級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());
獲取班級信息ui
Console.WriteLine("classroom name is " + jObject["classroom"]["name"]);
獲取學生信息
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("當前key不存在"); }
WebApi下的應用
項目開發中無論是前臺仍是後臺都會遇到煩人的null,數據庫表中字段容許空值,則代碼實體類中對應的字段類型爲可空類型Nullable<>,如int?,DateTime?,null值字段序列化返回的值都爲null,前臺對應字段賦值須要作null值判斷,怎麼才能全局把null替換爲空。
.NET Core 處理 WebAPI JSON 返回煩人的null爲空
總結
Json的使用遠不止於此,做者只是針對本身到如今爲止工做中常見的問題進行一個整理,後續也會慢慢補充新的內容,將文章不斷地更新優化。
The END
本文到此結束,但願對你有幫助 😃
更多精彩 技術文章彙總在個人 公衆號程序員工具集 ,持續更新,歡迎關注訂閱收藏。
若是還有什麼疑問或者建議,能夠多多交流,原創文章,文筆有限,才疏學淺,文中如有不正之處,萬望告知。
福利姬
公衆號後臺回覆:「關注禮包」,獲取價值5K的視頻學習資源
公衆號後臺回覆:「技能圖譜」,送你一份最全的開發者技能圖譜