Python解析JSON數據的基本方法實例代碼
一、JSON數據格式介紹
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。
JSON建構于兩種結構:json是Javascript中的對象和數組中的對象,本質上來講就是有特定結構的字符串,所以可以通過這兩種結構可以表示各種復雜的結構:
1 對象: 對象在js中表示為”{}”括起來的內容,數據結構為{key:value, key:value…}的鍵值對結構,在面向對象的語言中,key為對象的屬性,value為對應屬性的值,所以很容易去理解。屬性值value可以為:數字、字符串、數組、對象等。
2 數組:數組在js中是中括號“[]”括起來的內容,數據結構為[“java”, “javascript”, “vb”….] 取值方式和所有語言一樣,使用索引獲取,字段值的類型是:數字、字符串、數組、對象等
簡單地說,JSON 可以將 JavaScript 對象中表示的一組數據轉換為字符串,然后就可以在函數之間輕松地傳遞這個字符串,或者在異步應用程序中將字符串從 Web 客戶機傳遞給服務器端程序。這個字符串看起來有點兒古怪,但是 JavaScript 很容易解釋它,而且 JSON 可以表示比”名稱 / 值對”更復雜的結構。例如,可以表示數組和復雜的對象,而不僅僅是鍵和值的簡單列表。
按照最簡單的形式,可以用下面這樣的 JSON 表示 “名稱 / 值對” :{ “firstName”: “Brett” }
當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少復雜性。
如:
? ? ?{undefined ? ? ? ? "people":[ ? ? ? ? ?{"firstName": "111", ....}, ? ? ? ? ?{"firstName": "222",...}, ? ? ? ? ?{"firstName": "333",...} ? ? ?]}
二、Python處理JSON數據
Python的json模塊提供了一種很簡單的方式來編碼和解碼JSON數據。 其中兩個主要的函數是 json.dumps() 和 json.loads()
import json data={"name":"sunxiaomin","sex":"男","年齡":"26"} #將python字典類型變成json數據格式 json_str=json.dumps(data) print(json_str) print(type(json_str)) #將JSON數據解碼為dict(字典) data1=json.loads(json_str) print(data1) print(type(data1))
輸出結果:
{"name": "sunxiaomin", "sex": "\u7537", "\u5e74\u9f84": "26"}
<class 'str'>
{'name': 'sunxiaomin', 'sex': '男', '年齡': '26'}
<class 'dict'>
函數詳解
使用 JSON 函數需要導入 json 庫:import json。
函數 | 描述 |
---|---|
json.dumps | 將 Python 對象編碼成 JSON 字符串 |
json.loads | 將已編碼的 JSON 字符串解碼為 Python 對象 |
json.dumps
json.dumps 用于將 Python 對象編碼成 JSON 字符串。
語法
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
1) skipkeys:布爾型,默認為False,如果設為True的話,在dict中的key值如果出現非 (str, unicode, int, long, float, bool, None)對象,則跳過該key而不是拋出 ValueError。
2) indent:非負整數,表示編碼后的字符串的縮進方式,默認為None表示無縮進,一般設為4,如果設為0則只會添加換行符。
indent參數根據數據格式縮進顯示,讀起來更加清晰, indent的值,代表縮進空格式:
3) separators:元組,默認為None,如果設置的話,一般設為(’,’,’:’),表示把’,’和‘:’后面的空格去掉,用來精簡輸出字符串。
separators參數的作用是去掉‘,’ ‘:’后面的空格,在傳輸數據的過程中,越精簡越好,冗余的東西全部去掉。
4) sort_keys: 布爾型,默認為False,如果設為True,則輸出的dict會按照key值排序。
sort_keys是告訴編碼器按照字典key排序(a到z)輸出
5) 輸出真正的中文需要指定ensure_ascii=False
如果無任何配置,或者說使用默認配置,
輸出的會是‘涼涼’的ASCII字符嗎,而不是真正的中文。
這是因為json.dumps 序列化時對中文默認使用的ascii編碼。
json.loads 語法
json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
Python 編碼為 JSON 類型轉換對應表:
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
JSON 解碼為 Python 類型轉換對應表:
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
總結
到此這篇關于Python解析JSON數據的基本方法的文章就介紹到這了,更多相關Python解析JSON數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
centos 自動運行python腳本和配置 Python 定時任務
這篇文章主要介紹了centos 自動運行python腳本和配置 Python 定時任務,文章內容介紹詳細,需要的小伙伴可以參考一下,希望對你有所幫助2022-03-03