一嵌洼、什么是Json赠叼?
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式甘改。它使得人們很容易的進(jìn)行閱讀和編寫(xiě)拦键。
同時(shí)也方便了機(jī)器進(jìn)行解析和生成彪杉。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999
的一個(gè)子集毅往。 JSON采用完全獨(dú)立于程序語(yǔ)言的文本格式,但是也使用了類(lèi)C語(yǔ)言的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)派近。
這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言攀唯。
Json的兩種結(jié)構(gòu)
1、對(duì)象:對(duì)象在js中表示為“{}”括起來(lái)的內(nèi)容渴丸,數(shù)據(jù)結(jié)構(gòu)為 {key:value,key:value,...}的鍵值對(duì)的結(jié)構(gòu)侯嘀,在面向?qū)ο蟮恼Z(yǔ)言中,key為對(duì)象的屬性谱轨,value為對(duì)應(yīng)的屬性值戒幔,所以很容易理解,取值方法為 對(duì)象.key 獲取屬性值碟嘴,這個(gè)屬性值的類(lèi)型可以是 數(shù)字溪食、字符串、數(shù)組娜扇、對(duì)象幾種错沃。
例如:var user = {"name":"Manas","gender":"Male","birthday":"1987-8-8"}
2、數(shù)組:數(shù)組在js中是中括號(hào)“[]”括起來(lái)的內(nèi)容雀瓢,數(shù)據(jù)結(jié)構(gòu)為 ["java","javascript","vb",...]枢析,取值方式和所有語(yǔ)言中一樣,使用索引獲取刃麸,字段值的類(lèi)型可以是 數(shù)字醒叁、字符串、數(shù)組、對(duì)象幾種把沼。
例如:var userlist = [
{"user":{"name":"Manas","gender":"Male","birthday":"1987-8-8"}},
{"user":{"name":"Mohapatra","Male":"Female","birthday":"1987-7-7"}}
]
二啊易、Json的用途
主要用于數(shù)據(jù)的傳輸,還可以作為程序的配置文件饮睬。
三租谈、C#中操作Json
1、Json序列化
public string GetJsonString()
{
List products = new List(){
new Product(){Name="蘋(píng)果",Price=5.5},
new Product(){Name="橘子",Price=2.5},
new Product(){Name="干柿子",Price=16.00}
};
ProductList productlist = new ProductList();
productlist.GetProducts = products;
//return new JavaScriptSerializer().Serialize(productlist));
return JsonConvert.SerializeObject(productlist);
}
public class Product
{
public string Name { get; set; }
public double Price { get; set; }
}
public class ProductList
{
public List GetProducts { get; set; }
}
生成結(jié)果:{"GetProducts":[{"Name":"蘋(píng)果","Price":5.5},{"Name":"橘子","Price":2.5},{"Name":"柿子","Price":16}]}
2捆愁、Json反序列化
string json = @"{
'Name': 'Bad Boys',
'ReleaseDate': '1995-4-7T00:00:00',
'Genres': [
'Action',
'Comedy'
]
}";
Movie m = JsonConvert.DeserializeObject(json);
string name = m.Name; //name 為 Bad Boys
四割去、Json和Xml的比較
XML
1)應(yīng)用廣泛,可擴(kuò)展性強(qiáng)昼丑,被廣泛應(yīng)用各種場(chǎng)合
2)讀取呻逆、解析沒(méi)有JSON快
3)可讀性強(qiáng),可描述復(fù)雜結(jié)構(gòu)
JSON
1)結(jié)構(gòu)簡(jiǎn)單菩帝,都是鍵值對(duì)咖城。
2)讀取、解析速度快胁附,很多語(yǔ)言支持
3)傳輸數(shù)據(jù)量小酒繁,傳輸速率大大提高
4)描述復(fù)雜結(jié)構(gòu)能力較弱
JavaScript滓彰、PHP等原生支持控妻,簡(jiǎn)化了讀取解析。成為當(dāng)前互聯(lián)網(wǎng)時(shí)代普遍應(yīng)用的數(shù)據(jù)結(jié)構(gòu)
歡迎關(guān)注我的公眾號(hào)(同步更新文章):DoNet技術(shù)分享平臺(tái)