寫在前面
全部手打,沒有多余的話,全部干貨,基本上用到的我就記錄了。
一、什么是json
json:javascript object notation,是一種輕量級的數據交互格式,主要用于數據傳輸。
二、json語法規則
1、數據由鍵值對(映射)關系表示,使用 “:” 表示;
例子:"name" : "趙大"。
2、數據之間使用 “,” 分隔;
例子:"name" : "趙大", "age" : "27"。
3、數據映射的集合(對象)用 “{}” 包含;
例子:一條學生數據對象:
{"id" : "1", "name" : "趙大", "age" : "27", "gender" : "男"}
4、并列數據的集合(對象的數組形式)用 “[]”包含,之間用 “,”分隔;
例子:兩條學生數據對象數組:
[{"id" : "1", "name" : "趙大", "age" : "27", "gender" : "男"}, {"id" : "2", "name" : "錢二", "age" : "27", "gender" : "男"}]
三、json數據中的數據類型
- 數字 (整數或者浮點數)
- 字符串(在雙引號中)
- 布爾值(true或false)
- 數組 (在[]中)
- 對象 (在{}中)
- null
四、json格式數據的數據表現
通過json的語法規則可知,json數據一般有以下幾種表現形式:
1、單對象;
2、對象集合(數組);
3、1和2的組合:嵌套;
4、純字符串;
五、c#.net與json
在c#.net環境下有對json序列化和反序列化支持的組件,也有第三方的組件,
.net支持的有 javascriptserializer 類和 datacontractjsonserializer 類,
第三方支持的有 json.net(newtonsoft.json)等。
1、使用 javascriptserializer 類對json數據序列化和反序列化:
首先得在引用中引用:system.web.extentions.dll
類文件中做引用:using system.web.script.serialization;
1
2
3
4
5
6
7
8
9
10
11
|
dictionary< string , string > stu = new dictionary< string , string >(); stu.add( "id" , "1" ); stu.add( "name" , "趙大" ); stu.add( "age" , "27" ); stu.add( "gender" , "男" ); javascriptserializer js = new javascriptserializer(); string stujson = js.serialize(stu); console.writeline( "使用 javascriptserializer 類序列化得到json格式數據:" ); console.writeline(stujson); 示例:json單對象序列化 |
1
2
3
4
5
6
7
8
9
10
|
string dejson = stujson; dictionary< string , string > destu = js.deserialize<dictionary< string , string >>(dejson); console.writeline( "使用 javascriptserializer 類將json格式數據反序列化指定類:" ); foreach ( string s in stu.keys) { console.writeline(s.tostring() + "=" + stu[s].tostring()); } console.readline(); 示例:json單對象反序列化 |
運行結果:
2、使用第三方支持的 json.net(newtonsoft.json)類庫對json數據序列化和反序列化:
參考地址:
六、javascript與json
1、javascript中自定義json字符串并解析;
例子:學生趙大信息:
1
2
3
4
|
function myjson() { var stu = { "id" : "1" , "name" : "趙大" , "age" : "27" , "gender" : "男" , "school" : { "class" : "03" , "teacher" : "趙大的老師" } }; alert( "id=" + stu.id + ", " + "name=" + stu.name + ", " + "age=" + stu.age + ", " + "gender=" + stu.gender); } |
效果圖:
可以看到自定義的json字符串后,在使用stu這個對象可以自動識別為成員變量了。
2、從后臺傳入的json數據通過解析后轉化為json數據對象:
例子:學生趙大信息(這里的ajax請求用jquery處理了):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$(document).ready(function () { $.ajax({ url: "ajaxweb.ashx" , type: "get" , datatype: "json" , success: function (data) { var stu = json.parse(data); alert( "id=" + stu.id + ", " + "name=" + stu.name + ", " + "age=" + stu.age + ", " + "gender=" + stu.gender + ", " + "teacher=" + stu.school[ "teacher" ]); }, error: function (e) { alert(e.tostring()); } }) }) 從后臺獲取json字符串后轉化為json對象 |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public void processrequest(httpcontext context) { context.response.write(myjson2()); } private string myjson2() { string json = " {\"id\": \"1\", \"name\": \"趙大\", \"age\": \"27\", \"gender\": \"男\", \"school\": { \"class\": \"03\", \"teacher\": \"趙大的老師\" }}" ; javascriptserializer js = new javascriptserializer(); json = js.serialize(json); return json; } 后臺處理文件代碼 |
效果圖:
chrome下f12開發人員工具調試效果圖:
七、參考資料
百度百科
百度搜索
慕課網(http://www.imooc.com/)
JSON在線校驗與排版美化(https://tool.zzvips.com)
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!
原文鏈接:http://www.cnblogs.com/zhaosx/p/6364681.html