json 是一種輕量級的資料交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。
一般表現形式是乙個無序的 鍵值對 的集合。
資料:官方文件:
python操作json的其他方式:
1. 將字串轉化為json串(dumps)
importjson
a="\"foo\bar
"result=json.dumps(a)
(result)
print(type(result))
執行結果:
"\"foo\bar
"'str
'>
2. 將列表轉化為json串(dumps)
importjson
a=['
foo', ]
result=json.dumps(a)
(result)
print(type(result))
執行結果:
["foo", ]
'str
'>
3. 將字典轉化為json串(dumps)
importjson
a=result=json.dumps(a)
(result)
print(type(result))
執行結果:
'str
'>
4. 轉化字典為json串時,進行排序(dumps)
importjson
a=result=json.dumps(a, sort_keys=true)
(result)
執行結果:
對照上乙個例子,可以看到json串按照字典的key進行了排序。
5. 定義json串縮排(dumps)
importjson
a=[1,2,3,]
result=json.dumps(a, indent=4)
(result)
執行結果:
[1,2,
3,]
可以看到json串輸出時採用了定義的4個空格進行縮排。
6. 將產生的json串輸出到檔案流(dump)
importjson
myfile=open('
a.txt
','w')
a=[1,2,3,]
json.dump(a,myfile, indent=4)
myfile.close()
執行之後,開啟 a.txt 檔案進行檢視:
[1,2,
3,]
1. 將json串解碼為列表(loads)
importjson
json_str='
["foo", ]
'result=json.loads(json_str)
(result)
print(type(result))
執行結果:
['foo', ]
'list
'>
可以看到,這裡講json串解碼為乙個list。
2. 將json串解碼為字典(loads)
importjson
json_str='
'result=json.loads(json_str)
(result)
print(type(result))
執行結果:
'dict
'>
3. 從檔案流解碼json串(load)
以上面dump生成的a.txt為例。
importjson
myfile=open("
a.txt
",'r')
#json_str=''
result=json.load(myfile)
(result)
(type(result))
myfile.close()
執行結果:
[1, 2, 3, ]'list
'>
可以看到成功將a.txt的內容解碼為list。
1. dumps 和 dump 的區別
下面是兩個函式的定義:
dump(obj, fp, skipkeys=false, ensure_ascii=true, check_circular=true,allow_nan=true, cls=none, indent=none, separators=none,default=none, sort_keys=false, **kw)dumps(obj, skipkeys=false, ensure_ascii=true, check_circular=true,allow_nan=true, cls=none, indent=none, separators=none,default=none, sort_keys=false, **kw)
可以看到,dump比 dumps多了乙個引數 fp。
dumps 會直接將生成的 json串 返回,也就是可以採取 json_str=dumps()的方式來獲取結果。
但是 dump 沒有返回值,它會將生成的 json串 輸出到 fp 流中。
2. loads 和 load 的區別
下面是兩個函式的定義:
load(fp, cls=none, object_hook=none, parse_float=none,parse_int=none, parse_constant=none, object_pairs_hook=none, **kw)loads(s, encoding=none, cls=none, object_hook=none, parse_float=none,parse_int=none, parse_constant=none, object_pairs_hook=none, **kw)
可以看到 load 的前兩個引數是 fp 以及 cls,而 loads 的前兩個引數是 s 和 encoding。
loads 會將 json串直接進行解碼輸出。
load 是從 fp 檔案流中讀取json串,然後進行解碼輸出。本質load函式定義的時候還是呼叫的 load函式。
3. 抓取請求,並解析json內容
這裡採用的是python 的 requests 庫進行抓取。
importjson
import
requests
r=requests.get('')
(type(r.text))
json_str=r.text
result=json.loads(json_str)
(result)
(type(result))
if result['
id']==26096:
print("
success")
else
:
print("
fail
")
執行結果如下:
'str'>], '
key': '
銀魂', '
id': 26096, '
issummarypic
': '
y', '
hasother
': 1, ……
'dict
'>success
這裡首先採用request.get 抓取json網頁,然後對 r.text 網頁內容進行解析。如果網頁內容 id 值為 26096的話,這裡就列印success。
備註:當然,這裡也可以直接使用 r.json()進行json解析。
python3的檔案操作
python的檔案操作和php的檔案很類似 file物件使用 open 函式來建立,open的引數 r表示讀,w寫資料,在寫之前先清空檔案內容,a開啟並附加內容,開啟檔案之後記得關閉 下表列出了 file 物件常用的函式 序號方法及描述 file.close 關閉檔案。關閉後檔案不能再進行讀寫操作。...
python3 解析json資料
python中json的序列化,反序列化分別對應encoding,decoding encoding 把乙個python物件編碼轉換為json串 decoding 把json串轉碼成python物件 json字串 import json test str1 json.dumps test,sort ...
python3基礎 json模組
方法 解釋json.dumpus 將 python 物件編碼成 json 字串 json.loads 將字串編碼為乙個python物件 json.dumpu 將python物件序列化到乙個檔案,是文字檔案,相當於將序列化後的json字元寫到乙個檔案 json.load 從檔案中反序列化出python...