1. 程式人生 > >json文件格式詳解

json文件格式詳解

with ++ 範例 使用 with open 輕量級 之間 關聯 不同

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數據交換語言。

JSON建構於兩種結構:

(1)“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。

(2)值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。

JSON具有以下這些形式:

1.對象

對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。

技術分享圖片

2.數組

數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。

技術分享圖片

值(value)可以是雙引號括起來的字符串(string)、數值(number)、true、false、 null、對象(object)或者數組(array)。這些結構可以嵌套。

技術分享圖片

字符串(string)是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符(character)即一個單獨的字符串(character string)。

字符串(string)與C或者Java的字符串非常相似。

技術分享圖片

數值(number)也與C或者Java的數值非常相似。除去未曾使用的八進制與十六進制格式。除去一些編碼細節。

技術分享圖片

使用範例及註意事項

1.對象的每個屬性都要有雙引號,否則json數據不能正常加載

我們寫一個python腳本做下測試:

import json

with open("data.json", r) as load_f:
    data=json.load(load_f)
    print(data)

(1){"name":"taoeyhuang","age":18}

技術分享圖片

(2){"name":"taoeyhuang","age":18,"sex":"male",hair:"black"} 這裏hair屬性沒有帶雙引號

技術分享圖片

異常日誌“json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 44 (char 43)”

我們也可以看出異常的原因是雙引號的問題

2.多對象範例(數組+對象)

數組中可以嵌套數組也可以嵌套對象

{

    "name": "BeJson",

    "url": "http://www.bejson.com",

    "page": 88,

    "isNonProfit": true,

    "address": {

        "street": "科技園路.",

        "city": "江蘇蘇州",

        "country": "中國"

    },

    "links": [

        {

            "name": "Google",

            "url": "http://www.google.com"

        },

        {

            "name": "Baidu",

            "url": "http://www.baidu.com"

        },

        {

            "name": "SoSo",

            "url": "http://www.SoSo.com"

        }

    ]

}

參考博客:http://www.json.org/json-zh.html

json文件格式詳解