Python解析JSON數(shù)據(jù)的基本方法實例代碼
一、JSON數(shù)據(jù)格式介紹
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。
JSON建構(gòu)于兩種結(jié)構(gòu):json是Javascript中的對象和數(shù)組中的對象,本質(zhì)上來講就是有特定結(jié)構(gòu)的字符串,所以可以通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu):
1 對象: 對象在js中表示為”{}”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為{key:value, key:value…}的鍵值對結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對象的屬性,value為對應(yīng)屬性的值,所以很容易去理解。屬性值value可以為:數(shù)字、字符串、數(shù)組、對象等。
2 數(shù)組:數(shù)組在js中是中括號“[]”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為[“java”, “javascript”, “vb”….] 取值方式和所有語言一樣,使用索引獲取,字段值的類型是:數(shù)字、字符串、數(shù)組、對象等
簡單地說,JSON 可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機傳遞給服務(wù)器端程序。這個字符串看起來有點兒古怪,但是 JavaScript 很容易解釋它,而且 JSON 可以表示比”名稱 / 值對”更復(fù)雜的結(jié)構(gòu)。例如,可以表示數(shù)組和復(fù)雜的對象,而不僅僅是鍵和值的簡單列表。
按照最簡單的形式,可以用下面這樣的 JSON 表示 “名稱 / 值對” :{ “firstName”: “Brett” }
當(dāng)需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少復(fù)雜性。
如:
? ? ?{undefined ? ? ? ? "people":[ ? ? ? ? ?{"firstName": "111", ....}, ? ? ? ? ?{"firstName": "222",...}, ? ? ? ? ?{"firstName": "333",...} ? ? ?]}
二、Python處理JSON數(shù)據(jù)
Python的json模塊提供了一種很簡單的方式來編碼和解碼JSON數(shù)據(jù)。 其中兩個主要的函數(shù)是 json.dumps() 和 json.loads()
import json data={"name":"sunxiaomin","sex":"男","年齡":"26"} #將python字典類型變成json數(shù)據(jù)格式 json_str=json.dumps(data) print(json_str) print(type(json_str)) #將JSON數(shù)據(jù)解碼為dict(字典) data1=json.loads(json_str) print(data1) print(type(data1))
輸出結(jié)果:
{"name": "sunxiaomin", "sex": "\u7537", "\u5e74\u9f84": "26"}
<class 'str'>
{'name': 'sunxiaomin', 'sex': '男', '年齡': '26'}
<class 'dict'>
函數(shù)詳解
使用 JSON 函數(shù)需要導(dǎo)入 json 庫:import json。
函數(shù) | 描述 |
---|---|
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,如果設(shè)為True的話,在dict中的key值如果出現(xiàn)非 (str, unicode, int, long, float, bool, None)對象,則跳過該key而不是拋出 ValueError。
2) indent:非負整數(shù),表示編碼后的字符串的縮進方式,默認為None表示無縮進,一般設(shè)為4,如果設(shè)為0則只會添加換行符。
indent參數(shù)根據(jù)數(shù)據(jù)格式縮進顯示,讀起來更加清晰, indent的值,代表縮進空格式:
3) separators:元組,默認為None,如果設(shè)置的話,一般設(shè)為(’,’,’:’),表示把’,’和‘:’后面的空格去掉,用來精簡輸出字符串。
separators參數(shù)的作用是去掉‘,’ ‘:’后面的空格,在傳輸數(shù)據(jù)的過程中,越精簡越好,冗余的東西全部去掉。
4) sort_keys: 布爾型,默認為False,如果設(shè)為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 類型轉(zhuǎn)換對應(yīng)表:
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
JSON 解碼為 Python 類型轉(zhuǎn)換對應(yīng)表:
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
總結(jié)
到此這篇關(guān)于Python解析JSON數(shù)據(jù)的基本方法的文章就介紹到這了,更多相關(guān)Python解析JSON數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python存儲json數(shù)據(jù)發(fā)生亂碼的解決方法
- Python實現(xiàn)提取JSON文件中指定數(shù)據(jù)并保存至CSV或Excel內(nèi)
- 執(zhí)行python腳本并傳入json數(shù)據(jù)格式參數(shù)方式
- Python中使用json.load()和json.loads()加載json數(shù)據(jù)的方法實例
- 使用python如何提取JSON數(shù)據(jù)指定內(nèi)容
- 詳解Python中如何將數(shù)據(jù)存儲為json格式的文件
- python 調(diào)用API接口 獲取和解析 Json數(shù)據(jù)
- Python?JSON數(shù)據(jù)解析過程(最新推薦)
相關(guān)文章
淺談python中的getattr函數(shù) hasattr函數(shù)
下面小編就為大家?guī)硪黄獪\談python中的getattr函數(shù) hasattr函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06Python處理數(shù)據(jù)之匹配兩個Excel文件數(shù)據(jù)的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Python處理數(shù)據(jù)之匹配兩個Excel文件數(shù)據(jù)的實現(xiàn)方法,可以使用Python的Pandas庫來實現(xiàn)兩層循環(huán)匹配兩個Excel文件,需要的朋友可以參考下2023-09-09centos 自動運行python腳本和配置 Python 定時任務(wù)
這篇文章主要介紹了centos 自動運行python腳本和配置 Python 定時任務(wù),文章內(nèi)容介紹詳細,需要的小伙伴可以參考一下,希望對你有所幫助2022-03-03keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式
這篇文章主要介紹了keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06