項目中用到了json,此處就簡單介紹其用法。javascript
認識JSON: html
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON採用徹底獨立於語言的文本格式,可是也使用了相似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(通常用於提高網絡傳輸速率)。(百度百科).java
JSON是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。XML也是一種數據交換格式,爲何沒有選擇XML呢?由於XML雖然能夠做爲跨平臺的數據交換格式,可是在JS(JavaScript的簡寫)中處理XML很是不方便,同時XML標記比數據多,增長了交換產生的流量,而JSON沒有附加的任何標記,在JS中可做爲對象處理,因此咱們更傾向於選擇JSON來交換數據。web
JSON結構:json
var jsonObj = { "name": "tom", "age": 12 }
var jsonArr = [ { "id": 1, "name": "john" }, {"age":13,"address":"str1"} ]
var str = jsonObj.name;//tom var str2 = jsonArr[0].id;//1 var str3 = jsonArr[1].age;//13
.net中使用json,經常使用的兩種方法:數組
定義類:網絡
//類:人 public class Person { public int id { get; set; } public Student student { get; set; } } //類:學生 public class Student { public int score { get; set; } public string grade { get; set; } }
一、引入using Newtonsoft.Json;處理json最經常使用的插件Newtonsoft.Json。數據結構
對象轉換爲json字符串:app
Student student = new Student(); student.grade = "二年級"; student.score = 99; Person person = new Person(); person.id = 5; person.student = student; string jsonstr = JsonConvert.SerializeObject(person);
結果:框架
{"id":5,"student":{"score":99,"grade":"二年級"}}
json字符串轉換爲對象:
能夠使用JObject或JArray的Parse方法輕鬆地將json字符串轉換爲json對象,而後經過對象的方式提取數據。
JObject ob = JObject.Parse(jsonstr); int id = Convert.ToInt32(ob["id"].ToString());//5 Student stu = (ob["student"]).ToObject<Student>(); int score = stu.score;//99
二、使用.net框架自帶類庫,命名空間System.Web.Script.Serialization,添加引用:System.Web.Extensions.dll。
對象轉換爲json字符串:
System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); System.Text.StringBuilder sb = new StringBuilder(); jsonSerializer.Serialize(person, sb); string jsonstr = sb.ToString();
json字符串轉換爲對象:
Person ob = jsonSerializer.Deserialize<Person>(jsonstr); int id = ob.id;//5 Student stu = ob.student; int score = stu.score;//99
後臺處理特殊json字符串:
有時在後臺接收到一個json字符串或者數組,能夠根據獲得的字符串進行類定義,而後解析獲得比較理想的屬性值。
由於常常用到,此處將web請求響應代碼貼出來,方便查看。
string url = "http://192.168.5.111:8001"; System.Net.HttpWebRequest request = (System.Net.HttpWebRequest) WebRequest.Create(url); request.ContentType = "application/json; charset=UTF-8"; request.Method = "POST";
string jsonstr = ""; byte[] data = System.Text.Encoding.UTF8.GetBytes(jsonstr); request.ContentLength = data.Length; System.IO.Stream stream = request.GetRequestStream(); stream.Write(data, 0, data.Length); stream.Close(); System.Net.HttpWebResponse response = (System.Net.HttpWebResponse) request.GetResponse(); System.IO.StreamReader streamReader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8); string text = streamReader.ReadToEnd(); streamReader.Close();
參考: