2016-06-23 34 views
0

我想从JSON文件中抓取数据。我能够从一些标签中抓取数据,但很少有嵌套标签给出问题。以下是该文件的样本 -刮JSON数组嵌套标记

{"orders":[{ 
    "order_id":9000, 
    "flight_start":"2017-06-15T05:00:00.000Z", 
    "flight_end":"2017-06-22T05:00:00.000Z", 
    "spots":[{ 
     "spot_id":7354259, 
     "spot_length":15}], 
    "constraints":{ 
     "forbid":[{ 
     "network":"BRVO"}, 
     {"network":"DSE"}, 
     {"network":"ESPN"}, 
     {"network":"DFC"}, 
     {"hours":[2,6], 
     "days_of_week":["Monday","Tuesday","Thursday","Friday"]}, 
     {"hours":[2,6], 
     "days_of_week":["Saturday","Sunday"]}], 
     "allocation":[{ 
     "hours":[6,9], 
     "impressions":{ 
      "min":0.05, 
      "max":0.05}, 
     "days_of_week":["Monday","Tuesday","Wednesday","Thursday","Friday"]},{ 
     "hours":[20,0], 
     "impressions":{"min":0.5,"max":0.5}, 
     "days_of_week":["Monday","Tuesday","Wednesday","Thursday","Friday"]},{ 
     "budget":{ 
      "min":1, 
      "max":1}, 
     "spot_length":15}]}}]} 

我无法从网络标签刮掉所有的值,它只是从所有网络选项卡每个顺序返回顶部值。

我使用下面的代码 -

import urllib 
import json 
url = 'http://vw-test.elasticbeanstalk.com/test' 
json_obj = urllib.request.urlopen(url).read().decode('UTF-8') 
data = json.loads(json_obj) 
for i in data["orders"]: 
    k = i["order_id"] 
    j = i["flight_start"] 
    l = i["flight_end"] 
    m = i ['spots'] 
    for value in m:  
     a = value["spot_length"] 
     b = value["spot_id"] 
    n = i["constraints"] 
    c = n["forbid"] 
    d = c[0] 
    e = d["network"] 
    print(e) 

如果任何人能帮助我想出解决办法,我会非常感激。

回答

1

你问题中的json数据不完整。做一些假设,这可能会发挥作用:

for i in data["orders"]: 
    k = i["order_id"] 
    j = i["flight_start"] 
    l = i["flight_end"] 
    m = i ['spots'] 
    for value in m: 
     a = value["spot_length"] 
     b = value["spot_id"] 
    n = i["constraints"] 
    c = n["forbid"] 
    d = c[0] 
    networks = [d["network"] for d in c if "network" in d] 
    print(networks) 
+0

是的,这工作,非常感谢。顺便说一句,如果你想看看,代码中给出了json文件的链接。 – Uasthana

+0

不客气。我的意思是说,在你的问题中显示的样本数据需要以''spot_length'结尾:15}]}}]}'结构良好。 – martineau

+0

是的,你是对的对不起,我已经修复它的问题。非常感谢 – Uasthana