使用Python解析JSON數(shù)據(jù)的基本方法
Python的json模塊提供了一種很簡單的方式來編碼和解碼JSON數(shù)據(jù)。 其中兩個主要的函數(shù)是 json.dumps() 和 json.loads() , 要比其他序列化函數(shù)庫如pickle的接口少得多。 下面演示如何將一個Python數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON:
import json
data = {
'name' : 'ACME',
'shares' : 100,
'price' : 542.23
}
json_str = json.dumps(data)
下面演示如何將一個JSON編碼的字符串轉(zhuǎn)換回一個Python數(shù)據(jù)結(jié)構(gòu):
data = json.loads(json_str)
如果你要處理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 來編碼和解碼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)
用法示例:
相對于python解析XML來說,我還是比較喜歡json的格式返回,現(xiàn)在一般的api返回都會有json與XML格式的選擇,json的解析起來個人覺得相對簡單些
先看一個簡單的豆瓣的圖書查詢的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":"中國文學(xué)","title":"中國文學(xué)"},{"count":43,"name":"隨筆","title":"隨筆"},{"count":38,"name":"中國現(xiàn)當(dāng)代文學(xué)","title":"中國現(xiàn)當(dāng)代文學(xué)"}],"origin_title":"","image":"http://img5.douban.com/mpic/s27008269.jpg","binding":"","translator":[],"catalog":"自序 讓記憶抵抗n001 掌瓢黎爺n024 遺民老譚n039 亂世游擊:表哥的故事n058 綁赴刑場的青春n076 風(fēng)住塵香花已盡n083 “酷客”李斯n100 散材毛喻原n113 頹世華筵憶黃門n122 球球外傳:n一個時代和一只小狗的際遇n141 童年的恐懼與仇恨n151 殘忍教育n167 湖山一夢系平生n174 香格里拉散記n208 民國屐痕","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)過警察、囚徒、書商。曾出版歷史小說《父親的戰(zhàn)爭》、散文集《江上的母親》(獲臺北2010國際書展非虛構(gòu)類圖書大獎,是該獎項第一個大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評為2012年年度好書)。","summary":"1.野夫書稿中被刪減最少,最能體現(xiàn)作者觀點、情感的作品。n2.文字凝練,具有極強的感染力。以一枝孤筆書寫那些就在你我身邊的大歷史背景下普通人的生活變遷。n3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達世間的歡笑和悲苦。","price":"32元"}
看起來別提多亂了,現(xià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: "中國文學(xué)",
title: "中國文學(xué)"
},
{
count: 43,
name: "隨筆",
title: "隨筆"
},
{
count: 38,
name: "中國現(xiàn)當(dāng)代文學(xué)",
title: "中國現(xiàn)當(dāng)代文學(xué)"
}
],
origin_title: "",
image: "http://img5.douban.com/mpic/s27008269.jpg",
binding: "",
translator: [ ],
catalog: "自序 讓記憶抵抗 001 掌瓢黎爺 024 遺民老譚 039 亂世游擊:表哥的故事 058 綁赴刑場的青春 076 風(fēng)住塵香花已盡 083 “酷客”李斯 100 散材毛喻原 113 頹世華筵憶黃門 122 球球外傳: 一個時代和一只小狗的際遇 141 童年的恐懼與仇恨 151 殘忍教育 167 湖山一夢系平生 174 香格里拉散記 208 民國屐痕",
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)過警察、囚徒、書商。曾出版歷史小說《父親的戰(zhàn)爭》、散文集《江上的母親》(獲臺北2010國際書展非虛構(gòu)類圖書大獎,是該獎項第一個大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評為2012年年度好書)。",
summary: "1.野夫書稿中被刪減最少,最能體現(xiàn)作者觀點、情感的作品。 2.文字凝練,具有極強的感染力。以一枝孤筆書寫那些就在你我身邊的大歷史背景下普通人的生活變遷。 3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達世間的歡笑和悲苦。",
price: "32元"
}
下面我們通過python來取出想要的信息,比如我們想要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']
是不是很簡單,其實只要把返回的json格式嵌套搞清楚,json還是比較簡單的
PS:關(guān)于json操作,這里再為大家推薦幾款比較實用的json在線工具供大家參考使用:
在線JSON代碼檢驗、檢驗、美化、格式化工具:
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語言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
相關(guān)文章
python寫入已存在的excel數(shù)據(jù)實例
下面小編就為大家分享一篇python寫入已存在的excel數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
使用Python中的Argparse實現(xiàn)將列表作為命令行參數(shù)傳遞
Argparse?是一個?Python?庫,用于以用戶友好的方式解析命令行參數(shù),本文我們將討論如何使用?Python?中的?Argparse?庫將列表作為命令行參數(shù)傳遞,感興趣的可以了解下2023-08-08
Python實現(xiàn)將MP4視頻轉(zhuǎn)化為GIF圖像
與靜態(tài)圖像相比,動態(tài)的?GIF?圖片更能吸引各位讀者的注意力,還可以提供更生動、有趣和引人入勝的內(nèi)容,本文為大家介紹了Python將MP4視頻轉(zhuǎn)化為GIF圖像的方法,需要的可以參考下2023-06-06
10行Python代碼計算汽車數(shù)量的實現(xiàn)方法
這篇文章主要介紹了10行Python代碼計算汽車數(shù)量的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
如何將python中的List轉(zhuǎn)化成dictionary
這篇文章主要介紹在python中如何將list轉(zhuǎn)化成dictionary,通過提出兩個問題來告訴大家如何解決,有需要的可以參考借鑒。2016-08-08
關(guān)于pycharm?python3.7成功安裝dlib庫的問題
這篇文章主要介紹了pycharm?python3.7成功安裝dlib庫的解決方法,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12

