使用Python解析JSON數(shù)據(jù)的基本方法
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 json data = { '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 data with open('data.json', 'w') as f: json.dump(data, f) # Reading data back with 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)單的豆瓣的圖書查詢的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 頹世華筵憶黃門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ò)警察、囚徒、書商。曾出版歷史小說(shuō)《父親的戰(zhàn)爭(zhēng)》、散文集《江上的母親》(獲臺(tái)北2010國(guó)際書展非虛構(gòu)類圖書大獎(jiǎng),是該獎(jiǎng)項(xiàng)第一個(gè)大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評(píng)為2012年年度好書)。","summary":"1.野夫書稿中被刪減最少,最能體現(xiàn)作者觀點(diǎn)、情感的作品。n2.文字凝練,具有極強(qiáng)的感染力。以一枝孤筆書寫那些就在你我身邊的大歷史背景下普通人的生活變遷。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 頹世華筵憶黃門 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ò)警察、囚徒、書商。曾出版歷史小說(shuō)《父親的戰(zhàn)爭(zhēng)》、散文集《江上的母親》(獲臺(tái)北2010國(guó)際書展非虛構(gòu)類圖書大獎(jiǎng),是該獎(jiǎng)項(xiàng)第一個(gè)大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評(píng)為2012年年度好書)。", summary: "1.野夫書稿中被刪減最少,最能體現(xiàn)作者觀點(diǎn)、情感的作品。 2.文字凝練,具有極強(qiáng)的感染力。以一枝孤筆書寫那些就在你我身邊的大歷史背景下普通人的生活變遷。 3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達(dá)世間的歡笑和悲苦。", price: "32元" }
下面我們通過(guò)python來(lái)取出想要的信息,比如我們想要rating,images里的large和summary
import urllib2 import json html = 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在線工具供大家參考使用:
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat
在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.jb51.net/code/jsoncodeformat
在線json壓縮/轉(zhuǎn)義工具:
http://tools.jb51.net/code/json_yasuo_trans
C語(yǔ)言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
相關(guān)文章
利用Python學(xué)習(xí)RabbitMQ消息隊(duì)列
RabbitMQ和郵局的主要區(qū)別就是RabbitMQ接收、存儲(chǔ)和發(fā)送的是二進(jìn)制數(shù)據(jù)----消息,本篇文章給大家介紹利用Python學(xué)習(xí)RabbitMQ消息隊(duì)列,對(duì)python消息隊(duì)列相關(guān)知識(shí)感興趣的朋友參考下2015-11-11Python實(shí)現(xiàn)訪問(wèn)者模式詳情
這篇文章主要介紹了Python實(shí)現(xiàn)訪問(wèn)者模式詳情,訪問(wèn)者模式,指作用于一個(gè)對(duì)象結(jié)構(gòu)體上的元素的操作。訪問(wèn)者可以使用戶在不改變?cè)摻Y(jié)構(gòu)體中的類的基礎(chǔ)上定義一個(gè)新的操作,下文更多相關(guān)資料,需要的朋友可以參考下2022-03-03Python的GUI編程之Pack、Place、Grid的區(qū)別說(shuō)明
這篇文章主要介紹了Python的GUI編程之Pack、Place、Grid的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06解讀sqlalchemy的常用數(shù)據(jù)類型有哪些
這篇文章主要介紹了解讀sqlalchemy的常用數(shù)據(jù)類型有哪些,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Python 實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的示例(靜態(tài)圖片,gif皆可)
這篇文章主要介紹了Python 實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的示例,幫助大家更好的利用python進(jìn)行圖片處理,感興趣的朋友可以了解下2020-11-1120行python代碼實(shí)現(xiàn)人臉識(shí)別
這篇文章主要介紹了python人臉識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05python tensorflow基于cnn實(shí)現(xiàn)手寫數(shù)字識(shí)別
這篇文章主要為大家詳細(xì)介紹了python tensorflow基于cnn實(shí)現(xiàn)手寫數(shù)字識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01