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官方網站去看看吧

http://www.json.org

可以看到不同語言對於這個資料格式的實作 接下來也會提到實作的部分

string to json

<script>
    var objJSON = JSON.parse(str);
</script>

C# JSON 的序列化和反序列化

參考資料:(https://dotblogs.com.tw/berrynote/2016/08/18/200338)

JSON.parse(str)

參考資料:(https://www.w3schools.com/js/js_json_parse.asp)

Last updated