代码之家  ›  专栏  ›  技术社区  ›  Dan P.

如何使用Python解析/提取嵌套的JSON数据?

  •  2
  • Dan P.  · 技术社区  · 7 年前

    我目前正在尝试从包含嵌套数据的JSON提要中提取产品数据。

    嵌套结构如下所示: http://live.icecat.biz/api/?shopname=openIcecat-live&lang=en&content=featuregroups&icecat_id=1334921

    我主要想提取数据库中产品的基本数据表信息。每个产品在“顶层”有不同的功能类别,在嵌套结构中有不同的功能类别。

    到目前为止,我的代码如下所示:

    import requests
    url2 = 'http://live.icecat.biz/api/?shopname=openIcecat-live&lang=de&content=featuregroups&icecat_id=1334921'
    
    content = requests.get(url).content
    
    j = json.loads(content)    
    
    for each in j['data']['FeaturesGroups']:
        print each ['FeatureGroup']['Name']['Value']
    

    它工作良好,可以打印每个功能类别的标题。但我无法解析各个功能。我该怎么做?

    我的尝试是使用第二个循环来迭代j['data']['FeaturesGroups']['Features'](见下文),但没有成功:/

    for each in j['data']['FeaturesGroups']:
        for each in ['Features']:
            print ['Feature']['ID']
    

    非常感谢!

    2 回复  |  直到 7 年前
        1
  •  3
  •   Rakesh    7 年前
    import requests
    import json
    url2 = 'http://live.icecat.biz/api/?shopname=openIcecat-live&lang=de&content=featuregroups&icecat_id=1334921'
    
    content = requests.get(url2).content
    
    j = json.loads(content)
    
    for each in j['data']['FeaturesGroups']:
        print each['FeatureGroup']['Name']['Value']
        for i in each["Features"]:
            print i["ID"]
    
        2
  •  1
  •   galaxyan    7 年前
    import requests
    import json
    url = 'http://live.icecat.biz/api/?shopname=openIcecat-live&lang=de&content=featuregroups&icecat_id=1334921'
    
    content = requests.get(url).content
    
    j = json.loads(content)    
    
    def find_all(item, level):
        if isinstance(item, dict):
            for k in item:
                print k
                find_all(item[k],level+1)
        else:
            print ' '*level ,item
    
    for each in j['data']['FeaturesGroups']:
        find_all(each['FeatureGroup'], 0)
    
    
    ID
      3
    Name
    Language
       DE
    ID
       437975
    Value
       Speicher
    ID
      28
    Name
    Language
       DE
    ID
       437998
    Value
       Betriebsbedingungen
    ID
      146
    Name
    Language
       DE
    ID
       624349
    Value
       Weitere Spezifikationen