Python 標(biāo)準(zhǔn)庫之 Json 模塊
JSON (JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于 ECMAScript (歐洲計算機協(xié)會制定的 javascript 規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。
1. 概述
1.1 json 格式
使用 JSON 描述一個人:
{
"name": "tom",
"age": 12
}
- 人有兩個屬性: name 和 age
- 屬性 name 的值為 “tom”
- 屬性 age 的值為 12
1.2 json 模塊
Python 標(biāo)準(zhǔn)庫的 json 模塊提供了對 json 的支持:
- 把字符串轉(zhuǎn)換成 JSON 對象
- 把 JSON 對象換成字符串
json 模塊提供了如下常用方法:
方法 | 功能 |
---|---|
json.dumps(obj) | 將 JSON 對象轉(zhuǎn)換成字符串 |
json.loads(obj) | 將字符串轉(zhuǎn)換成 JSON 對象 |
json.dump(obj,file) | 將 JSON 對象轉(zhuǎn)換成字符串,并寫入到文件中 |
json.load(file) | 讀取文件中的字符串,轉(zhuǎn)換成 JSON 對象 |
2. json.dumps(obj)
json.dumps(obj) 的功能是將 JSON 對象轉(zhuǎn)換成字符串,示例如下:
>>> import json
>>> object = {'name':'tom', 'age':12}
>>> string = json.dumps(object)
>>> string
'{"name": "tom", "age": 12}'
- 在第 2 行,創(chuàng)建變量 object,變量 object 是 JSON 對象
- 在第 3 行,使用 dumps 將 object 轉(zhuǎn)換為 string
3. json.loads(s)
json.loads(obj) 的功能是將字符串轉(zhuǎn)換成 JSON 對象,示例如下:
>>> import json
>>> string = '{"name": "tom", "age": 12}'
>>> object = json.loads(string)
>>> object
{'name':'tom', 'age':12}
>>> object['name']
'tom'
>>> object['age']
12
- 在第 2 行,創(chuàng)建字符串 string,它以字符串的形式描述了一個 JSON 對象
- 在第 3 行,使用 loads 將 string 轉(zhuǎn)換為 object
- 在第 6 行,顯示 object 的屬性 name 的值
- 在第 8 行,顯示 object 的屬性 age 的值
4. json.dump(obj,file)
json.dump(obj,file) 的功能是將 JSON 對象轉(zhuǎn)換成字符串,并寫入到文件中,示例如下:
import json
file = open('person.json', 'w')
object = {'name':'tom', 'age':12}
json.dump(object, file)
file.close()
- 在第 2 行,創(chuàng)建文件 person.json
- 在第 3 行,創(chuàng)建 JSON 對象 object
- 在第 4 行,將 JSON 對象 object 寫入到文件 file 中
運行該程序,在當(dāng)前目錄下生成文件 person.json,內(nèi)容如下:
{"name": "tom", "age": 12}
5. json.load(file)
json.load(file) 的功能是將讀取文件中的字符串,轉(zhuǎn)換成 JSON 對象,示例如下:
import json
file = open('person.json')
object = json.load(file)
print(object)
print(object['name'])
print(object['age'])
file.close()
- 在第 2 行,打開文件 person.json
- 在第 3 行,從文件中讀取字符串,轉(zhuǎn)換成 JSON 對象
- 在第 5 行,顯示 object 的屬性 name 的值
- 在第 6 行,顯示 object 的屬性 age 的值
假設(shè)當(dāng)前目錄下存在文件 person.json,內(nèi)容如下:
{"name": "tom", "age": 12}
運行該程序,輸出結(jié)果如下:
{'name':'tom', 'age':12}
tom
12