关于Json的总结
一、什么是Json?
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它使得人們很容易的進(jìn)行閱讀和編寫。
同時(shí)也方便了機(jī)器進(jìn)行解析和生成。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999
的一個(gè)子集。 JSON采用完全獨(dú)立于程序語言的文本格式,但是也使用了類C語言的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。
這些特性使JSON成為理想的數(shù)據(jù)交換語言。
Json的兩種結(jié)構(gòu)
1、對(duì)象:對(duì)象在js中表示為“{}”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key:value,key:value,...}的鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,所以很容易理解,取值方法為 對(duì)象.key 獲取屬性值,這個(gè)屬性值的類型可以是 數(shù)字、字符串、數(shù)組、對(duì)象幾種。
例如:var user = {"name":"Manas","gender":"Male","birthday":"1987-8-8"}
2、數(shù)組:數(shù)組在js中是中括號(hào)“[]”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數(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="蘋果",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":"蘋果","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)讀取、解析沒有JSON快
3)可讀性強(qiáng),可描述復(fù)雜結(jié)構(gòu)
JSON
1)結(jié)構(gòu)簡(jiǎn)單,都是鍵值對(duì)。
2)讀取、解析速度快,很多語言支持
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)
閱讀原文
總結(jié)
- 上一篇: watch命令
- 下一篇: Wordpress淘宝客专用链接跳转插件