2013-10-07 104 views
-3

我正在使用python中的請求模塊來獲取JSON響應中的某些字段。從Python App Annie解析此JSON響應

import json 
fn = 'download.json' 
data = json 

response = requests.get('http://api.appannie.com/v1/accounts/1000/apps/mysuperapp/sales?break_down=application+iap&start_date=2013-10-01&end_date=2013-10-02', \ 
auth=('username', 'password')) 

data = response.json() 
print(data) 

這工作在Python,作爲響應如下:

{ 'prev_page':無, '貨幣': 'USD', 'next_page':無, 'sales_list': ['收入':{'ad':'0.00','iap':{'refunds':'0.00','sales':'0.00','promotions':'0.00'},'app':{ 'refunds':'0.00','updates':'0.00','downloads':'0.00','promotions':'0.00'}}, 'units':{'iap':{'refunds':0 ,'sales':0,'promotions':0},'app':{'refunds':0,'updates':0,'downloads':2000,'promotions':0}},'country':' all','date':'all'}],'iap_sales':[],'page_num':1,'code':200,'page_index':0}

問題是我該如何解析這個來獲取我的下載數量在'app'塊中 - 即「2000」值?

+0

正確地格式化您的代碼 –

+3

data = json ???這應該怎麼做? –

回答

0

您可以使用jsonloads()方法 -

import json 

response = requests.get('http://api.appannie.com/v1/accounts/1000/apps/mysuperapp/sales?break_down=application+iap&start_date=2013-10-01&end_date=2013-10-02', 
         auth=('username', 'password')) 
data = json.loads(response.json()) # data is a dictionary now 

sales_list = data.get('sales_list') 
for sales in sales_list: 
    print sales['revenue']['app'] 
+0

我試過這個(即時通訊使用Python 3.3),並收到以下錯誤 TypeError - 預期的字符串或緩衝區。 DEF解碼(個體,S,_w = WHITESPACE.match): 「」「返回的''s'' Python的表示(一個''str''實例含有JSON文檔 ) 」「 「 obj,end = self.raw_decode(s,idx = _w(s,0).end()) – Dynalytics

+0

負載需要一個json字符串。檢查data.json()輸出。 –

+0

我不確定輸出是否是正確的json格式。當我簡單地打印(數據)時,我得到了一些看起來像json的東西。 012'''''''''''','''''','''''','''','''','''','''','''' '退款':'0.00','銷售':'0.00','促銷':'0.00'},'app':{'downloads':'0.00','退款':'0.00','更新': '0.00','promotions':'0.00'},'ad':'0.00'},'units':{'iap':{'refunds':0,'sales':0,'promotions':0} ,'app':{'downloads':'2000'date':'all'}],'page_index':0,'currency':'USD'} – Dynalytics

2

的response.json()數據後,已經是一本字典,否則response.json()將引發異常。因此,您可以像訪問其他字典一樣訪問它。

0

您可以使用json.loads

import json 
import requests 

response = requests.get(...) 
json_data = json.loads(response.text) 

這是一個給定的字符串轉換成一個字典,它允許你在代碼中輕鬆地訪問您的JSON數據。