Python的json模塊提供了一種很簡(jiǎn)單的方式來(lái)編碼和解碼JSON數(shù)據(jù)。 其中兩個(gè)主要的函數(shù)是 json.dumps() 和 json.loads() , 要比其他序列化函數(shù)庫(kù)如pickle的接口少得多。 下面演示如何將一個(gè)Python數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON:
import jsondata = {'name' : 'ACME','shares' : 100,'price' : 542.23}json_str = json.dumps(data)
下面演示如何將一個(gè)JSON編碼的字符串轉(zhuǎn)換回一個(gè)Python數(shù)據(jù)結(jié)構(gòu):
data = json.loads(json_str)
如果你要處理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 來(lái)編碼和解碼JSON數(shù)據(jù)。例如:
# Writing JSON datawith open('data.json', 'w') as f: json.dump(data, f)# Reading data backwith open('data.json', 'r') as f: data = json.load(f)用法示例:
相對(duì)于python解析XML來(lái)說(shuō),我還是比較喜歡json的格式返回,現(xiàn)在一般的api返回都會(huì)有json與XML格式的選擇,json的解析起來(lái)個(gè)人覺(jué)得相對(duì)簡(jiǎn)單些
先看一個(gè)簡(jiǎn)單的豆瓣的圖書(shū)查詢(xún)的api返回
http://api.douban.com/v2/book/isbn/9787218087351
{"rating":{"max":10,"numRaters":79,"average":"9.1","min":0},"subtitle":"","author":["野夫"],"pubdate":"2013-9","tags":[{"count":313,"name":"野夫","title":"野夫"},{"count":151,"name":"散文隨筆","title":"散文隨筆"},{"count":83,"name":"身邊的江湖","title":"身邊的江湖"},{"count":82,"name":"土家野夫","title":"土家野夫"},{"count":70,"name":"散文","title":"散文"},{"count":44,"name":"中國(guó)文學(xué)","title":"中國(guó)文學(xué)"},{"count":43,"name":"隨筆","title":"隨筆"},{"count":38,"name":"中國(guó)現(xiàn)當(dāng)代文學(xué)","title":"中國(guó)現(xiàn)當(dāng)代文學(xué)"}],"origin_title":"","image":"http://img5.douban.com/mpic/s27008269.jpg","binding":"","translator":[],"catalog":"自序 讓記憶抵抗n001 掌瓢黎爺n024 遺民老譚n039 亂世游擊:表哥的故事n058 綁赴刑場(chǎng)的青春n076 風(fēng)住塵香花已盡n083 “酷客”李斯n100 散材毛喻原n113 頹世華筵憶黃門(mén)n122 球球外傳:n一個(gè)時(shí)代和一只小狗的際遇n141 童年的恐懼與仇恨n151 殘忍教育n167 湖山一夢(mèng)系平生n174 香格里拉散記n208 民國(guó)屐痕","pages":"256","images":{"small":"http://img5.douban.com/spic/s27008269.jpg","large":"http://img5.douban.com/lpic/s27008269.jpg","medium":"http://img5.douban.com/mpic/s27008269.jpg"},"alt":"http://book.douban.com/subject/25639223/","id":"25639223","publisher":"廣東人民出版社","isbn10":"7218087353","isbn13":"9787218087351","title":"身邊的江湖","url":"http://api.douban.com/v2/book/25639223","alt_title":"","author_intro":"鄭世平,筆名野夫,網(wǎng)名土家野夫。畢業(yè)于武漢大學(xué),曾當(dāng)過(guò)警察、囚徒、書(shū)商。曾出版歷史小說(shuō)《父親的戰(zhàn)爭(zhēng)》、散文集《江上的母親》(獲臺(tái)北2010國(guó)際書(shū)展非虛構(gòu)類(lèi)圖書(shū)大獎(jiǎng),是該獎(jiǎng)項(xiàng)第一個(gè)大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評(píng)為2012年年度好書(shū))。","summary":"1.野夫書(shū)稿中被刪減最少,最能體現(xiàn)作者觀點(diǎn)、情感的作品。n2.文字凝練,具有極強(qiáng)的感染力。以一枝孤筆書(shū)寫(xiě)那些就在你我身邊的大歷史背景下普通人的生活變遷。n3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達(dá)世間的歡笑和悲苦。","price":"32元"}看起來(lái)別提多亂了,現(xiàn)在我們將其格式進(jìn)行簡(jiǎn)單的整理
{rating: { max: 10, numRaters: 79, average: "9.1", min: 0},subtitle: "",author: [ "野夫"],pubdate: "2013-9",tags: [ { count: 313, name: "野夫", title: "野夫" }, { count: 151, name: "散文隨筆", title: "散文隨筆" }, { count: 83, name: "身邊的江湖", title: "身邊的江湖" }, { count: 82, name: "土家野夫", title: "土家野夫" }, { count: 70, name: "散文", title: "散文" }, { count: 44, name: "中國(guó)文學(xué)", title: "中國(guó)文學(xué)" }, { count: 43, name: "隨筆", title: "隨筆" }, { count: 38, name: "中國(guó)現(xiàn)當(dāng)代文學(xué)", title: "中國(guó)現(xiàn)當(dāng)代文學(xué)" }],origin_title: "",image: "http://img5.douban.com/mpic/s27008269.jpg",binding: "",translator: [ ],catalog: "自序 讓記憶抵抗 001 掌瓢黎爺 024 遺民老譚 039 亂世游擊:表哥的故事 058 綁赴刑場(chǎng)的青春 076 風(fēng)住塵香花已盡 083 “酷客”李斯 100 散材毛喻原 113 頹世華筵憶黃門(mén) 122 球球外傳: 一個(gè)時(shí)代和一只小狗的際遇 141 童年的恐懼與仇恨 151 殘忍教育 167 湖山一夢(mèng)系平生 174 香格里拉散記 208 民國(guó)屐痕",pages: "256",images: { small: "http://img5.douban.com/spic/s27008269.jpg", large: "http://img5.douban.com/lpic/s27008269.jpg", medium: "http://img5.douban.com/mpic/s27008269.jpg"},alt: "http://book.douban.com/subject/25639223/",id: "25639223",publisher: "廣東人民出版社",isbn10: "7218087353",isbn13: "9787218087351",title: "身邊的江湖",url: "http://api.douban.com/v2/book/25639223",alt_title: "",author_intro: "鄭世平,筆名野夫,網(wǎng)名土家野夫。畢業(yè)于武漢大學(xué),曾當(dāng)過(guò)警察、囚徒、書(shū)商。曾出版歷史小說(shuō)《父親的戰(zhàn)爭(zhēng)》、散文集《江上的母親》(獲臺(tái)北2010國(guó)際書(shū)展非虛構(gòu)類(lèi)圖書(shū)大獎(jiǎng),是該獎(jiǎng)項(xiàng)第一個(gè)大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評(píng)為2012年年度好書(shū))。",summary: "1.野夫書(shū)稿中被刪減最少,最能體現(xiàn)作者觀點(diǎn)、情感的作品。 2.文字凝練,具有極強(qiáng)的感染力。以一枝孤筆書(shū)寫(xiě)那些就在你我身邊的大歷史背景下普通人的生活變遷。 3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達(dá)世間的歡笑和悲苦。",price: "32元"}下面我們通過(guò)python來(lái)取出想要的信息,比如我們想要rating,images里的large和summary
import urllib2import jsonhtml = urllib2.urlopen(r'http://api.douban.com/v2/book/isbn/9787218087351')hjson = json.loads(heml.read())print hjson['rating']print hjson['images']['large']print hjson['summary']
是不是很簡(jiǎn)單,其實(shí)只要把返回的json格式嵌套搞清楚,json還是比較簡(jiǎn)單的
PS:關(guān)于json操作,這里再為大家推薦幾款比較實(shí)用的json在線(xiàn)工具供大家參考使用:
在線(xiàn)JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.VeVB.COm/code/json
JSON在線(xiàn)格式化工具:
http://tools.VeVB.COm/code/jsonformat
在線(xiàn)XML/JSON互相轉(zhuǎn)換工具:
http://tools.VeVB.COm/code/xmljson
json代碼在線(xiàn)格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.VeVB.COm/code/jsoncodeformat
在線(xiàn)json壓縮/轉(zhuǎn)義工具:
http://tools.VeVB.COm/code/json_yasuo_trans
C語(yǔ)言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.VeVB.COm/code/ccode_html_css_json
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注