2015-05-14 66 views
1

試圖從json響應中提取數據。響應包含額外的方括號,可能會解決這個問題?Python如何解析出json響應對象中的值

if debug: print "add_context_object Request: " + repr(response.url) 
if debug: print "add_context_object Response: " + repr(response.content) 
result = json.loads(response.content) 
print result 
print "Starting parse..." 
wrapper = result.get("RoutingObj" , result) 

add_context_object響應:

'[[{"RoutingObj": {"serialVersionUID":1,"balance":30000.0,"delinquency":null,"routeType":"Platinum"}}]]' 

json.loads回報:

[[{u'RoutingObj': {u'delinquency': None, u'balance': 30000.0, u'routeType': u'Platinum', u'serialVersionUID': 1}}]] 

誤碼出指示其列表:

wrapper = result.get("RoutingObj" , result) 
AttributeError: 'list' object has no attribute 'get' 
+0

謝謝,還發現在初始設置時添加索引結果工作:'結果= eval(response.content)[0] [0]'它可能不像下面的答案一樣靈活,但我沒有看到Web服務將返回多個索引的原因。 –

回答

0

可變result是列表的列表,要從列表中獲取元素,您應該使用索引。

result[0][0] 

然後得到: 如果你想從listdict的價值,你應該先通過索引查閱字典,就在這時,得到你想要

首先是價值,獲得元素從字典值:

result[0][0]['RoutingObj'] 

演示:

>>> k[0] 
[{u'RoutingObj': {u'delinquency': None, u'balance': 30000.0, u'serialVersionUID': 1, u'routeType': u'Platinum'}}] 

>>> k[0][0] 
{u'RoutingObj': {u'delinquency': None, u'balance': 30000.0, u'serialVersionUID': 1, u'routeType': u'Platinum'}} 

>>> k[0][0].get('RoutingObj') #Gets value associated to key 'RoutingObj' 
{u'delinquency': None, u'balance': 30000.0, u'serialVersionUID': 1, u'routeType': u'Platinum'} 
0

你應該使用正則表達式從[[和]]之間獲取json,那些方括號導致python認爲它是列表中的列表