[英]How to decode JSON with Python
我從reddit.com獲得了我的JSON,基本上是這樣的。 我已經做了很多閱讀,但我真的不明白如何從這個JSON中獲取我想要的信息(我想要一個故事鏈接列表)。 我知道我可以將JSON“解碼”成字典,但是我是否需要在整個JSON中重復以獲得我需要的東西?
提前致謝。
如果您使用的是Python 2.6或更高版本,請使用內置的json
庫。 否則,使用具有完全相同接口的simplejson
。
您可以自適應地執行此操作,而無需使用以下代碼自行檢查Python版本:
try:
import json
except ImportError:
import simplejson as json
然后,使用json.loads()
或其他任何適當的。
import urllib2
import json
u = urllib2.urlopen('http://www.reddit.com/.json')
print json.load(u)
u.close()
我假設您將數據解析為字典,然后從中提取相關位。
你可以使用適當的python庫在python中解析json
在使用json庫將其解析為dicts和list 之后 ,有兩種方法可以用Python“解碼”json。
首先,通過索引訪問它,如下所示:
url_list = [t['entries'][0]['url'] for t in data['windows'][0]['tabs']]
或者,您可以迭代其樹結構。 下面的示例函數不是通用的,它只是說明在解析樹時需要以不同的方式考慮JSON的三種不同類型的“節點”。 密鑰的“值”可能是數據,沒有密鑰的子節點列表,或者基本上是新JSON對象的字典。 您不能像在常規樹中那樣檢查每個節點的名稱,數據和子項。
def depthFirstSearch(self, jsonobj, target, parentKey=None):
if isinstance(jsonobj, dict):
for key, value in jsonobj.items():
if isinstance(value, (dict, list)):
self.depthFirstSearch(value, target, key)
else: # "data" node
if key == target and parentKey not in self.parentsToExclude:
self.results.append(value)
self.parents[parentKey] += 1
if isinstance(jsonobj, list):
for value in jsonobj:
#lists don't have keys, pass along key from last dict
self.depthFirstSearch(value, target, parentKey)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.