JSON學習筆記

項目中用到了json,此處就簡單介紹其用法。javascript

認識JSON: html

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON採用徹底獨立於語言的文本格式,可是也使用了相似於C語言家族的習慣(包括C、C++、C#Java、JavaScript、PerlPython等)。這些特性使JSON成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(通常用於提高網絡傳輸速率)。(百度百科).java

JSON是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。XML也是一種數據交換格式,爲何沒有選擇XML呢?由於XML雖然能夠做爲跨平臺的數據交換格式,可是在JS(JavaScript的簡寫)中處理XML很是不方便,同時XML標記比數據多,增長了交換產生的流量,而JSON沒有附加的任何標記,在JS中可做爲對象處理,因此咱們更傾向於選擇JSON來交換數據。web

 

JSON結構:json

json簡單說就是javascript中的對象和數組,因此這兩種結構就是對象和數組兩種結構,經過這兩種結構能夠表示各類複雜的結構。
一、對象:對象在js中表示爲「{}」括起來的內容,數據結構爲 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key爲對象的屬性,value爲對應的屬性值,因此很容易理解,取值方法爲 對象.key 獲取屬性值,這個屬性值的類型能夠是 數字、字符串、數組、對象幾種。
var jsonObj = { "name": "tom", "age": 12 }
二、數組:數組在js中是中括號「[]」括起來的內容,數據結構爲 ["java","javascript","vb",...],取值方式和全部語言中同樣,使用索引獲取,字段值的類型能夠是 數字、字符串、數組、對象幾種。
var jsonArr = [
            { "id": 1, "name": "john" },
            {"age":13,"address":"str1"}
        ]
通過對象、數組2種結構就能夠組合成複雜的數據結構了。
 
JS中使用json:
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; }
    }
View Code

一、引入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();

 

 

參考:

JSON詳解

相關文章
相關標籤/搜索