json文件格式詳解
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文件格式詳解