怎么在中提取JSON格式數據?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
可以做什么
是一種編程語言,內置了許多有效的工具,幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。
JSON
JSON( ) 是一種輕量級的數據交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。適用于進行數據交互的場景,比如網站前臺與后臺之間的數據交互。
中自帶了json模塊,直接 json即可使用
json簡單說就是中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構。
對象:對象在js中表示為{ }括起來的內容,數據結構為 { key:value, key:value, ... }的鍵值對的結構前臺 json數據解析,在面向對象的語言中,key為對象的屬性前臺 json數據解析,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是數字、字符串、數組、對象這幾種。
數組:數組在js中是中括號[ ]括起來的內容,數據結構為 ["", "", "C++", ...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
json模塊使用
json模塊提供了四個功能:dumps,dump,load,loads,用于字符串和數據類型進行轉換。
json.loads()
json.loads()方法將JSON文本字符串轉換為對象,從JSON到的類型轉化對照如下:
dict
array
list
(int)
int
(real)
float
true
True
false
False
null
None
示例:
import?json#?JSON文本字符串 str_list?=?'["a","b","c","d"]' str_dict?=?'{"name":"小白","age":1000}' #?json.loads將文本字符串轉化為JSON對象,在Python里就是Python對象了 data_list?=?json.loads(str_list) data_dict?=?json.loads(str_dict) print(type(data_list)) print(type(data_dict)) print(data_list) print(data_dict)
運行結果:
['a', 'b', 'c', 'd']
{'name': '小白', 'age': 1000}
說明:
JSON文本字符串中,數據應該用雙引號括起來,不然會報錯誤,比如上面和中的值都應該用雙引號,數字就不用。
json.dumps
json.dumps()方法實現類型轉化為json字符串,返回一個str對象把一個對象編碼轉換成Json字符串。從到JSON的類型轉化對照如下:
dict
list,tuple
array
str
int, float, int- & float- Enums
True
true
False
false
None
null
示例:
import?json data_list?=?[1,2,3,4] data_dict?=?{'name':'小黑','age':1000} print(json.dumps(data_list)) print(json.dumps(data_dict))
運行結果:
[1, 2, 3, 4]
{"name": "\u5c0f\u9ed1", "age": 1000}
說明:dumps方法可以將數據類型轉化為JSON文本字符串,但是可以看到當有中文的時候,轉換后中文字符都變成字符,要輸出中文需要設置dumps方法的參數=True設置為=False。如下:
print(json.dumps(data_dict,ensure_ascii=False)) #?運行結果:{"name":?"小黑",?"age":?1000}
此外,如果需要將數據保存為文本的時候,還需要指定文件的編碼格式為utf-8,比如將上面的數據(里面有中文字符)保存為data.json文件,代碼如下:
with?open('data.json','w',encoding='utf-8')?as?f: ??f.write(json.dumps(data_dict,ensure_ascii=False))
否則打開保存的文件,會有亂碼。
如果要處理的是文件而不是字符串,可以使用 json.dump()和json.load()來編碼和解碼JSON數據。比如:
#?寫入數據到文件 data_list?=?[{'name':'小白'},{'name':'小黑'}] with?open('data2.json','w',encoding='utf-8')?as?f: ??json.dump(data_list,f,ensure_ascii=False) #?從文件讀取數據 with?open('data2.json','r',encoding='utf-8')?as?f: data?=?json.load(f) print(data)
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。