json.dumps()
創(chuàng)新互聯(lián)建站成立于2013年,我們提供高端網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、全網(wǎng)營(yíng)銷推廣、小程序設(shè)計(jì)、微信公眾號(hào)開發(fā)、成都網(wǎng)站推廣服務(wù),提供專業(yè)營(yíng)銷思路、內(nèi)容策劃、視覺設(shè)計(jì)、程序開發(fā)來完成項(xiàng)目落地,為宣傳片制作企業(yè)提供源源不斷的流量和訂單咨詢。
該函數(shù)可以將簡(jiǎn)單數(shù)據(jù)類型(int\float\string\tuple\list\dict\unicode)轉(zhuǎn)換成JSON格式,樣例代碼如下:
import json
src_data = {"name":"Tacey","age":13,"sex":"male","interst":("Programing","Reading")}
#print repr(src_data)
print json.dumps(src_data)
輸出如下:
{'interst':('Programing','Reading'),'age':23,'name':'Tacey','sex':'male'}
{"interst":["programing","Reading"],"age":23,"name":"Tacey","sex":mal"}
2、json.loads()
該函數(shù)可以將JSON數(shù)據(jù)轉(zhuǎn)換成Python的簡(jiǎn)單數(shù)據(jù)類型,接著上面的代碼:
json_data = json.dumps(src_data)
print json.loads(json_data)["name"]
輸出結(jié)果:
Tacey
python中json文件處理涉及的四個(gè)函數(shù)json.loads()、json.dumps()、json.load()、json.dump()。
1)json.dumps()
將一個(gè)Python數(shù)據(jù)類型dict進(jìn)行json格式的編碼(字典-字符串)
eg:
age_dict = {'age1':'12', 'age2':'15'}
json_info = json.dumps(age_dict)
print("json_info = {}".format(json_info))
print("json_info type = {}".format(type(json_info)))
2)json.loads()
將json格式數(shù)據(jù)轉(zhuǎn)換為dict(字符串-字典)
json_age ='{"age1": "12", "age2": "15"}'
dict_age = json.loads(json_info)
print("json_age = {}".format(json_age))
print("dict_age type = {}".format(str(type(dict_age))))
3)json.load()
讀取文件,將里json格式字符串轉(zhuǎn)化為dict
with open(test.json, 'r') as file:
contents = json.load(file)
print(contents)
4)json.dump()
將dict類型轉(zhuǎn)換為json格式字符串,存入文件
number = [1, 2, 3, 5]
file = 'number.json'
with open(file?, 'w') as file:
json.dump(number, file)
json.dumps 用于將 Python 對(duì)象編碼成 JSON 字符串。
json.loads 用于解碼 JSON 數(shù)據(jù)。該函數(shù)返回 Python 字段的數(shù)據(jù)類型。
demjson.encode() 函數(shù)用于將 Python 對(duì)象編碼成 JSON 字符串。
demjson.decode() 函數(shù)解碼 JSON 數(shù)據(jù)。該函數(shù)返回 Python 字段的數(shù)據(jù)類型。
1、以下實(shí)例將數(shù)組編碼為 JSON 格式數(shù)據(jù):
#!/usr/bin/python
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.dumps(data)
print json
2、以下實(shí)例展示了Python 如何解碼 JSON 對(duì)象:
#!/usr/bin/python
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print text
一 前言 ?
最近一直在做開發(fā)相關(guān)的工作--基于Django的web 平臺(tái),其中需要從model層傳輸數(shù)據(jù)到view 層做數(shù)據(jù)展示或者做業(yè)務(wù)邏輯處理。我們采用通用的Json格式--Json(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和程序解析。
二 認(rèn)識(shí)Json
2.1 Json 結(jié)構(gòu)
常見的Json格式為 “名稱/值”對(duì)的集合,其中 值可以是對(duì)象,列表,字典,字符串等等。比如
backup_data?=?{"back_to_host":?"dbbk0",
"ip_address":?"10.10.20.3",
"host_name":?"rac4",
"port":?3306}
2.2 使用Json
Python的Json模塊序列化與反序列化的過程分別是 編碼和解碼。這兩個(gè)過程涉及到兩組不同的函數(shù)
編碼 把一個(gè)Python對(duì)象編碼轉(zhuǎn)換成Json字符串,json.dumps(data)/json.dump(data,file_handler)
解碼 把Json格式字符串解碼轉(zhuǎn)換成Python對(duì)象,json.loads(data)/json.load(file_handler)
在python中要使用Json模塊做相關(guān)操作,必須先導(dǎo)入:
import Json
2.3 主要函數(shù)
編碼函數(shù)主要有 json.dumps(data)/json.dump(data,file_handler)
json.dumps()的參數(shù)是將python對(duì)象轉(zhuǎn)換為字符串,如使用json.dumps序列化的對(duì)象json_dumps=json.dumps({'a':1, 'b':2}) ,json_dumps='{"b": 2, "a": 1}'
json.dump 是將內(nèi)置類型序列化為json對(duì)象后寫入文件。
解碼函數(shù)主要由json.loads(data)/json.load(file_handler) ?
json.loads的參數(shù)是內(nèi)存對(duì)象,把Json格式字符串解碼轉(zhuǎn)換成Python對(duì)象,json_loads=json.loads(d_json) ?#{ b": 2, "a": 1},使用load重新反序列化為dict
json.load()的參數(shù)針對(duì)文件句柄,比如本地有一個(gè)文件/tmp/test.json ?json_load=json.load(open('/tmp/test.json'))
具體案例參考如下:
In?[3]:?data={"back_to_host":?"rac1",
...:?"ip_address":?"10.215.20.3",
...:?"host_name":?"rac3",
...:?"port":?3306}
In?[7]:?json_str=json.dumps(data)
In?[8]:?print json_str
{"ip_address":?"10.215.20.3",?"back_to_host":?"rac1",?"host_name":?"rac3",?"port":?3306}
In?[9]:?json_loads=json.load(json_str)
---------------------------------------------------------------------------
AttributeError Traceback?(most recent?call?last)
ipython-input-9-180506f16431?in?module()
----?1 json_loads=json.load(json_str)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc?in?load(fp,?encoding,?cls,?object_hook,?parse_float,?parse_int,?parse_constant,?object_pairs_hook,?**kw)
284
285?""
注意 從上面的報(bào)錯(cuò)信息來看 json.loads 傳參是字符串類型,并不是文件句柄,沒有 read()屬性。
In?[10]:?json_loads=json.loads(json_str)
In?[11]:?print json_loads
{u'back_to_host':?u'rac1',?u'ip_address':?u'10.215.20.3',?u'host_name':?u'rac3',?u'port':?3306}
In?[12]:?type(json_loads)
Out[12]:?dict
In?[13]:?type(json_str)
Out[13]:?str
利用dump 將數(shù)據(jù)寫入 dump.json
In?[17]:?with open('/tmp/dump.json','w')?as f:
...:?json.dump(json_str,f)
...:
yangyiDBA:~?yangyi$ cat /tmp/dump.json
"{\"ip_address\": \"10.10.20.3\", \"back_to_host\": \"rac1\", \"host_name\": \"rac3\", \"port\": 3306}"
yangyiDBA:~?yangyi$
利用json.load 將dump.sjon的數(shù)據(jù)讀出來并賦值給 data?
In?[18]:?with open('/tmp/dump.json','r')?as f:
...:?data=json.load(f)
...:
In?[19]:?print data
{"ip_address":?"10.10.20.3",?"back_to_host":?"rac1",?"host_name":?"rac3",?"port":?3306}
三 小結(jié)
本文算是一篇學(xué)習(xí)筆記,主要對(duì)比了json.loads/json.load ?, json.dumps/ json.dump 的使用差異 ,方便以后更好的使用json 。
以上為本次分享內(nèi)容,感謝觀看。
網(wǎng)站標(biāo)題:json函數(shù)python jsonschema python
本文來源:http://muchs.cn/article12/dosppgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、外貿(mào)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)頁(yè)設(shè)計(jì)公司、面包屑導(dǎo)航、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)