JSON:JavaScript Object Notation 【JavaScript 對象表示法】
JSON 是一種輕量級的數據交換格式,完全獨立於任何程序語言的文本格式。一般,後臺應用程式將響應數據封裝成JSON格式返回。
JSON的基本語法如下:
JSON名稱/值對。JSON 數據的書寫格式是:名稱/值對。名稱/值對包括欄位名稱(在雙引號中),然後著是一個冒號(:),最後是值。
JSON最常用的格式是對象的鍵值對:
key只能是string, value可以是 object、array、string、number、true/false、null
{
"sites": [
{ "name":"360" , "url":"www.360.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"baidu" , "url":"www.baidu.com" }
]
}
1)json的key只能是字符串,dict的key可以是任何可hash的對象,例如:字符串、數字、元組等;
2)字典是一種數據結構,json是一種數據格式;字典有很多內置函數,有多種調用方法,而json是數據打包的一種格式,並不像字典具備操作性;
3)json的字符串強制用雙引號,dict的字符串可以用單引號、雙引號;
一般而言,我們會把json轉化為python中的字典或者列表,再對其進行操作。
Python處理json的模塊:jsonPythone3的標準庫JSON模塊,可以很方便的幫我們進行json數據的轉換和處理,這裡主要指序列化(json.dumps()、json.dump())和反序列化(json.loads()、json.load())。
序列化和反序列化:
將對象轉換為可通過網絡傳輸或可以存儲到本地磁碟的數據格式(如:XML、JSON或特定格式的字節串)的過程稱為序列化;反之,則稱為反序列化。
常用的JSON模塊方法:
json.dumps():將Python中的對象轉換為JSON中的字符串對象
json.dump():將python對象轉換成JSON字符串輸出到fp流中。
json.loads():將JSON中的字符串對象轉換為Python中的對象
json.load():讀取包含json對象的文件。
帶s的都是和字符串相關的,不帶s的都是和文件相關的。
把字典轉換成json串
import json
dic = {'name': 'xiaoming', 'age': 29}
json_str = json.dumps(dic)#返回json字符串
print(json_str)
print(type(json_str))
輸出:
{"name": "xiaoming", "age": 29}
<class 'str'>
Python解碼JSON對象
import json
json_str ='{"id":"09", "name": "Nitin", "department":"Finance"}'
# Convert string to Python dict
dict = json.loads(json_str)
print(dict)
#轉換成字典來後,要訪問其中的值,可以使用字典的key來訪問
print(dict['id'])
輸出:
{'id': '09', 'name': 'Nitin', 'department': 'Finance'}
09
讀取json文件
import json
with open('test1.json') as f:
a = json.load(f)
print(a)
print(type(a))
輸出:
{'sites': [{'name': '360', 'url': 'www.360.com'}, {'name': 'google', 'url': 'www.google.com'}, {'name': 'baidu', 'url': 'www.baidu.com'}]}
<class 'dict'>
寫入json文件
import json
dic ={
"name" : "xiaoming",
"age" : 20,
"phonenumber" : "15555555555"
}
with open("test2.json", "w") as outfile:
json.dump(dic, outfile)
文件test.json {"name": "xiaoming", "age": 20, "phonenumber": "15555555555"}
Python類型轉換JSON類型的對應關係
json類型轉換到Python的類型對照表