json(j**ascript object notation)是一種輕量級的資料交換格式。
「在json出現之前,大家一直用xml來傳遞資料。因為xml是一種純文字格式,所以它適合在網路上交換資料。xml本身不算複雜,但是,加上dtd、xsd、xpath、xslt等一大堆複雜的規範以後,任何正常的軟體開發人員碰到xml都會感覺頭大了,最後大家發現,即使你努力鑽研幾個月,也未必搞得清楚xml的規範。
終於,在2023年的一天,道格拉斯·克羅克福特(douglas crockford)同學為了拯救深陷水深火熱同時又被某幾個巨型軟體企業長期愚弄的軟體工程師,發明了json這種超輕量級的資料交換格式。」
json格式適合閱讀,容易理解,對計算機來說處理起來也很方便。json文字格式與c家族語言(c,c++,c#,j**a,j**ascript,perl,python以及許多其他語言)的傳統變數非常的相似,它的文字語言建立在以下兩種結構上:
l 「名稱/值」對的無序集合(以下簡稱鍵值對),在其他程式語言中,這種「名稱/值」對可能稱為物件、記錄、結構、字典、雜湊表、鍵表或者關聯陣列。
l 「值」的有序列表,對應其他語言中的陣列,向量,鍊錶或者序列。
上面這些基本的資料結構,幾乎所有現代語言都能支援其中一種或多種,因此json作為一種資料交換格式就理所當然了。
名稱(key/name):用雙引號包含的字串。
值(value)可以是雙引號包含的字串,真假值(true,false),空(null),物件或者陣列,也就是說可以是巢狀結構。
物件(object)是無序鍵值對的集合:以左花括弧「」結束,每個對名稱(name)與值(value)之間使用「:」分隔,鍵值對之間使用逗號「,」分隔。
陣列(array)是有序值的序列:array以左方括弧「[」開始,右方括弧「]」結束,值與值之間使用逗號「,」分隔。
字串(string)是使用雙引號包含的數個(可以是0個)連續unicode字元,使用反斜槓「\」作為轉義字元,類似c語言和j**a中的字串。
整數(number)除了不支援8進製和16進製制,其他特性與c語言和j**a語言整數相同。
python內建可以處理json資料的包:
1import json
在python中,json資料表示為乙個字串
1 json_data = ''
json資料還可以從檔案中讀取,python中的常用json方法如下:
函式描述
json.dumps()
將python物件編碼成json字串
json.loads()
將已編碼的json字串解碼為python物件
使用python json包中的json.loads()函式可以輕鬆解析json字串和json檔案為python物件。
例1:在python中將json解析為dict
1import
json
23 person = '
'4 person_dict =json.loads(person)56
#output:
7print
( person_dict)89
#output: ['english', 'french']
10print(person_dict['
languages
'])
例2:在python中讀取json檔案並解析person是json字串,person_dict是python dict物件。
假設你的如下json資料存放在名字為「person.json」的檔案中
1
可以使用如下方式解析該檔案中的json資料:
1import
json
23 with open('
path_to_file/person.json
') as f:
4 data =json.load(f)56
#output:
7print(data)
**中使用open()函式開啟檔案,使用json.load()函式解析json資料,將解析得到的資料放在data變數。
json字串在解析到python物件時的預設資料對應見下表
json
python
object
dict
array
list
string
unicode
number (int)
int, long
number (real)
float
true
true
false
false
null
none
關於json.load()函式的詳細使用方法見
關於在python中對檔案的操作請參考
使用python json包中的json.dumps()函式可以將python資料打包成json字串。
例3:將dict轉成json
1import
json
23 person_dict =
78 person_json =json.dumps(person_dict)910
#output:
11print(person_json)
例4:將json資料寫入檔案
上面的程式中,開啟乙個檔名為「person.txt」的檔案,開啟模式為寫入「w」,如果檔案不存在,就會自動新建乙個。接著使用json.dump()函式將person_dict資料打包成json字串,寫入到開啟的檔案中。
程式執行後會在該**所在目錄生成person.txt檔案,檔案內容應該如下;
1
2.3 格式化輸出json資料
為了分析json資料,我們可能需要以閱讀友好的格式輸出json資料。通過向json.dumps()函式傳遞格式控制引數indent和sort_keys可以實現該功能。
例5:格式化列印json資料
1import
json
23 person_string = ''4
5#getting dictionary
6 person_dict =json.loads(person_string)78
#pretty printing json string back
9print(json.dumps(person_dict, indent = 4, sort_keys=true))
上述引數意思為:縮排4個空格,對鍵值對進行公升序排序,執行後輸出結果如下:
1
可以看到,輸出結果多了換行和縮排,看起來整潔多了。
python物件在打包為json字串過程中預設資料對應見下表
python
json
dict
object
list, tuple
array
strstring
int, float, int- & float-derived enums
number
true
true
false
false
none
null
1,1213"phonenumbers
": [14,
18,2226
],27
"children
": ,28"
spouse
": null
29 }
python json模組簡單使用
介紹python中處理json資料的乙個模組的簡單使用 json.dumps 用於將python dict物件轉換為json字串,返回轉換後的json字串 import json a b json.dumps a print a,type a print b,type b json.dump 用於將...
Python json模組的使用
資料的分類 非結構化的資料 html等 處理方式 正規表示式,xpath 結構化資料 json,xml 處理方法 轉換為python資料型別 json是一種輕量級的資料交換結構,他使得人們很容易進行閱讀和編寫,同時方便了機器進行解析和生成。適用於進行資料交換場景,比如 前台與後台之間的資料互動。js...
Python JSON的基本使用
json.loads 用於解碼json資料,該函式返回python欄位的資料型別。loads 方法 import json jsondata res json.loads jsondata print res print type res loads 傳的是字串 注意 檔案裡只能寫字串,但是可以把字...