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的兩種結構
“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為物件(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或者關聯陣列 (associative array)。
值的有序列表(An ordered list of values)。在大部分語言中,它被理解為陣列(array)。
JSON在Python中的使用
在Python中操作JSON時需要引入json標準庫。
import json
型別轉換
Python型別轉JSON:
json.dump()
#1.Python的dict型別轉JSON
person_dict = {‘name’: ‘pig’, ‘age’: 18, ‘sex’: ‘man’, ‘hometown’: ‘江西撫州’}
person_dict_json = json.dumps(person_dict, indent=4)print(person_dict_json, ‘\n’)
person_list = [‘pig’, 18, ‘man’, ‘江西撫州’]person_list_json = json.dumps(person_list)print(person_list_json, ‘\n’)
person_obj = Person(‘pig’, 18, ‘man’, ‘江西撫州’)
person_obj_json = json.dumps(person_obj, default=lambda obj: obj.dict, indent=4)print(person_obj_json, ‘\n’)
JSON轉Python型別:
json.loads()
person_json = ‘{ “name”: “pig”,”age”: 18, “sex”: “man”, “hometown”: “江西撫州”}’
person_json_dict = json.loads(person_json)print(type(person_json_dict), ‘\n’)
person_json2 = ‘[“pig”, 18, “man”, “江西撫州”]’
person_json_list = json.loads(person_json2)print(type(person_json_list), ‘\n’)
person_json = ‘{ “name”: “pig”,”age”: 18, “sex”: “man”, “hometown”: “江西撫州”}’
person_json_obj = json.loads(person_json, object_hook=lambda d: Person(d[‘name’], d[‘age’], d[‘sex’], d[‘hometown’]))print(type(person_json_obj), ‘\n’)
Python和JSON資料型別對應表
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number | int,long,float |
true,false | True,False |
null | None |
需要注意的點
JSON的鍵名和字串都必須使用雙引號引起來,而Python中單引號也可以表示為字串,所以這是個比較容易犯的錯誤!
Python型別與JSON相互轉換的時候到底是用load/dump還是用loads\dumps?
不加s的方法入參多了一個fp表示filepath,最後多了一個寫入檔案的操作。
所以我們在記憶的時候可以這樣記憶:
加s表示轉成字串(str),不加s表示轉成檔案。
本作品採用《CC 協議》,轉載必須註明作者和本文連結