標籤:
前兩天要用到json對象,久了沒有用JObject.用法都已經忘了.後來搞半天才一知半解.暫時把一直半解給記錄下來,以免以後忘記,若能協助到其他人那也不錯
首先用到的兩個類.JObject 和JArray 需要引入庫:Newtonsoft.Json.dll
我所用到的demo 是一個基本的MVC項目.
情況一:返回一個基本的json對象:
後台代碼:
public JObject GetObj() { JObject obj =new JObject(); obj.Add("Name","Ray"); return obj; }
通過chrome訪問會得到如下的結果:
情況二:生產環境肯定不會這麼簡單,肯定會有多個索引值對,我就是卡到這裡
返回一個稍顯複雜的json字串:
後台代碼:
public JObject GetObj() { JObject obj =new JObject(); obj.Add("Name","Ray"); obj.Add("Gender","Male"); return obj; }
通過chrome訪問會得到如下的結果:
情況三:到這裡仍然不能滿足實際需求,也許我們需要子物件,比如增加一個連絡方式,連絡方式有電話和QQ
後台代碼:
public JObject GetObj() { JObject obj =new JObject(); obj.Add("Name","Ray"); obj.Add("Gender","Male"); //增加一個連絡方式 JObject contact=new JObject(); contact.Add("Phone","151XXXXXXXX"); contact.Add("QQ","123456789"); obj.Add("Contact",contact); return obj; }
通過chrome訪問會得到如下的結果:
實際上後來vs的強大的外掛程式resharper 提示我Jobject 定義的時候可以用更簡潔的方法:請參考這種定義方法,不要一個一個add了:
JObject tom = new JObject {{"Name", "Tom"}, {"Gender", "Male"}};
好了,到了這裡JObject的使用是不是已經會了呢.但是實際情況中,json對象中還會包括一些數組.這個時候我們就要用到JArray了.
情況一:最基本的JArray
後台代碼:
public JArray GetJArray() { JArray array=new JArray(); JObject tom = new JObject {{"Name", "Tom"}, {"Gender", "Male"}}; JObject jack=new JObject{{"Name","Ray"},{"Gender","Female"}}; array.Add(tom); array.Add(jack); return array; }
通過chrome訪問會得到如下的結果:
情況二:實際情況下,這種文法是極少的,通常還是會出現嵌套情況,請看下面
後台代碼:
public JArray GetNestArray2() { //建立兩個JObject對象 JObject kevin = new JObject(); kevin.Add("name", "kevin"); kevin.Add("age", 18); JObject jack = new JObject(); jack.Add("Name", "Jack"); jack.Add("age", 20); //建立一JArray對象 JArray objj = new JArray(); objj.Add(kevin); objj.Add(jack); //建立最外層的JArray對象 JArray reArray=new JArray(); //用簡便的方法添加了一個JArray數組.參考上面new JObject的方法 reArray.Add(new JArray { new JObject { { "Name", "Lucy" }, { "age", 20 } }, new JObject { { "Name", "Lily" }, { "age", 20 } } }); //添加第一個JArray對象 reArray.Add(objj); return reArray; }View Code
可以這樣理解,一個[]必然對應著一個JArray對象.
通過chrome訪問會得到如下的結果:
情況三:實際情況下JArray和JObject混用.請看下面的代碼:
後台代碼:
public JArray GetNestArray() { JObject kevin = new JObject{ { "name", "kevin" },{"age", 18}}; JObject jack = new JObject {{"Name", "Jack"}, {"age", 20}}; JObject obj4 = new JObject(); JArray childArray = new JArray {kevin, jack}; obj4.Add("array", childArray); JArray objj = new JArray {kevin, jack, obj4}; return objj; }View Code
通過chrome訪問會得到如下的結果(實際上一個數組裡面儲存的應該是平級並且有相同格式的內容,該例子只作為示範用.生產環境考慮其他資料格式):
該方法返回的是JArray對象
情況四:返回的是一個Jobject對象,常見情況
後台代碼(商務邏輯是擷取一個學生的資訊,包括學生的兩門課程分數):
public JObject GetStudentInfo() { //建立一個JObject對象 增加兩個索引值對 JObject studentInfo=new JObject{{"name","Kevin"},{"gender","Male"}}; //建立一個JArray對象,可以理解成json對象中 value 位置的數組對象 -> [] JArray courses = new JArray { new JObject { { "courseName", "Math" }, { "score", 88 } }, new JObject { { "courseName", "English" }, { "age", 95 } } }; studentInfo.Add("courses", courses); return studentInfo; }
通過chrome訪問會得到如下的結果:
好了 到這裡你已經可以應付一般情況的資料了.
完畢! ^_^
C# 基礎,JOject JArray構造json對象