JSON
JSON
參考資料:(http://j796160836.pixnet.net/blog/post/30530326-%E7%9E%AD%E8%A7%A3json%E6%A0%BC%E5%BC%8F)
全名:JavaScript Object Notation
物件(Object) >> {} 陣列(Array) >> []
參考:(https://jsoneditoronline.org/)
物件的儲存方式: Key-Value
例如
person Brian = new Person("Brian",25);
寫成JSON
{
"Brian":
{
"Name":"Brian",
"age":25
}
}
陣列的儲存方式
例如
int[] arr = new int[]{1,2,3,4,5};
寫成JSON
[1,2,3,4,5]
JSON裡面,
可以放
數字、文字、布林
或者
陣列、物件、null
要混合的放也OK ~
物件和陣列的轉換
所以物件和陣列,某方面來說(不考慮資料損失),是可以互相轉換的
若 物件 -> 陣列
就會損失鍵值(key)的資料,留下值(value) 或是程式到時候指定說,要鍵值陣列(key array),就會把所有的鍵值(key)合併一起成陣列
若 陣列 -> 物件
就可以將每個值編上數字
JSON Object 的 Key 一定要是文字
而且在JSON格式文件中,不可以含有註解
最後來一個範例吧 ~
JSON
[
{
"Name":"Brian",
"report":{
"0":{
"subject":"Chinese",
"Score":80
},
"1":{
"subject":"English",
"Score":60
}
}
},
{
"Name":"Charles",
"report":{
"0":{
"subject":"Chinese",
"Score":70
},
"1":{
"subject":"English",
"Score":90
}
}
}
]
如果轉成XML
<data>
<student>
<name>Brian</name>
<report>
<subject>
<name>Chinese</name>
<score>80</score>
</subject>
<subject>
<name>English</name>
<score>60</score>
</subject>
</report>
</student>
<student>
<name>Charles</name>
<report>
<subject>
<name>Chinese</name>
<score>70</score>
</subject>
<subject>
<name>English</name>
<score>90</score>
</subject>
</report>
</student>
</data>
備註
在JSON的格式中,關於中文或其他非英文的部份
一定要用Unicode encode過
通常這個一般處理JSON的函式庫都會做掉
除非你自己print,自己兜出JSON格式
像是
我是中文 就會變成 \u6211\u662f\u4e2d\u6587
類似這種 \u開頭,接一串數字的東西
可以用這個工具做轉換(不過一般程式的library會做掉啦,這不用擔心)
http://www.htmlescape.net/stringescape_tool.html
另外有些字元在JSON不能直接打,需要做跳脫的(escape character) 在這 有些大家都很熟悉,就不細講了
\"
\\
\/
\b
\f
\n
\r
\t
這裡有些字碼表供參考
http://en.wikipedia.org/wiki/List_of_Unicode_characters
最後,練練英文,去JSON官方網站去看看吧
可以看到不同語言對於這個資料格式的實作 接下來也會提到實作的部分
string to json
<script>
var objJSON = JSON.parse(str);
</script>
C# JSON 的序列化和反序列化
參考資料:(https://dotblogs.com.tw/berrynote/2016/08/18/200338)
JSON.parse(str)
Last updated
Was this helpful?