json數據簡介
json數據是一個輕量級的數據交換格式,采用完全獨立於語言的文本格式,這些特性使json稱為理想的數據交換語言,易於人閱讀和編寫,同時易於機器解析和生成。
json中的字符集必須是UTF-8,json中的字符串必須用雙引號引起來。幾乎所有語言都內置了解析json的庫,JavaScript語言可以直接使用json。
json格式一般是“鍵值對”的格式,比如
鍵值對:{“firstName”:”Breet”,”lastName”:”MMM”,”email”:”XXX”}
再比如:
{
“programers”:[
{“firstName”:”Breet”,”lastName”:”MMM”,”email”:”XXX”},
{“firstName”:”Breet”,”lastName”:”MMM”,”email”:”XXX”}
],
“authors”:[
{“firstName”:”Breet”,”lastName”:”MMM”,”email”:”XXX”},
{“firstName”:”Breet”,”lastName”:”MMM”,”email”:”XXX”}
],
}
json的應用場景:web服務端的go數組->json字符串->網絡傳輸->json字符串->反序列化->go數組->信息呈現給用戶。
Python中解析json的庫
import json # 字典類型轉換為json字符串 data = {"id": 1, 'name': 'sy', 'passwrd': '123123'} print(type(data)) json_str = json.dumps(data) print(type(json_str)) print(json_str) print("*" * 20) # json字符串轉換為字典類型 json_str2 = '{"programers":[ {"firstName":"Breet","lastName":"MMM","email":"XXX"},'\ '{"firstName":"Breet","lastName":"MMM","email":"XXX"}], ' \ '"author": [{"firstName": "su", "lastName": "yang", "email": "XXX"},'\ '{"firstName": "Breet", "lastName": "MMM", "email": "XXX"}]}' print(type(json_str2)) data2 = json.loads(json_str2) print(type(data2)) print(json_str2) print(data2) print('*' * 20) # 將json數據寫入文件,用文件傳送 with open('aaa.json', 'w') as f: json.dump(data, f) with open('aaa.json', 'r') as f: data3 = json.load(f) print(type(data3)) print(data3)
運行結果:
<class 'dict'>
<class 'str'>
{"id": 1, "name": "sy", "passwrd": "123123"}
********************
<class 'str'>
<class 'dict'>
{"programers":[ {"firstName":"Breet","lastName":"MMM","email":"XXX"},{"firstName":"Breet","lastName":"MMM","email":"XXX"}], "author": [{"firstName": "su", "lastName": "yang", "email": "XXX"},{"firstName": "Breet", "lastName": "MMM", "email": "XXX"}]}
{'programers': [{'email': 'XXX', 'lastName': 'MMM', 'firstName': 'Breet'}, {'email': 'XXX', 'lastName': 'MMM', 'firstName': 'Breet'}], 'author': [{'email': 'XXX', 'lastName': 'yang', 'firstName': 'su'}, {'email': 'XXX', 'lastName': 'MMM', 'firstName': 'Breet'}]}
********************
<class 'dict'>
{'id': 1, 'name': 'sy', 'passwrd': '123123'}