JSON格式导航python

时间:2019-03-16 06:26:44

标签: python shopify

我正在尝试检索单个订单下的多个项目的标题。 在“ line_items”下可以有多个小节,用于显示每个项目的信息,标题是每个项目的参数之一。

[0]带给我第一项标题。

[-1]带给我最后一个标题。

如何与之间的小节进行交互?有没有一种方法可以返回所有关联的订单标题(无论是否有1个或更多)?

  r = requests.get("jsonURL", params="jsonparams")
  data = r.json()

  for item in data['orders']:
    purchased = item['line_items'][0]['title']
    purchased1 = item['line_items'][-1]['title']

3 个答案:

答案 0 :(得分:0)

您可以通过添加如下所示的内部循环来做到这一点:

r = requests.get("jsonURL", params="jsonparams")
data = r.json()

for items in data['orders']:
    for item in items['line_items']:
       print(item['title'])

这将打印出每个订单中商品的标题。

如果只想打印出一部分项目,则可以在items['line_items']上使用切片。如果只想打印前n个项目,则应写items['line_items'][:n]。如果只想打印最后的n个项目,则可以写items['line_items'][-n]。您甚至可以将两者结合使用,例如items['line_items'][1:-2]将跳过列表中的前两项和后两项。

答案 1 :(得分:0)

希望这对您有所帮助。

r = requests.get("jsonURL", params="jsonparams")
data = r.json()

result = [items['items'] for items in data['orders']['line_items']]

如果要获取第一个索引:

print(result[0])

如果要获取第一个索引:

print(result[-1])

答案 2 :(得分:0)

代码中的JSON看起来像这样:

    data =  {
        "orders": {
        "line_items": [
            {
                "title": "abc"
            },
            {
                "title": "def"
            },
            {
                "title": "ghi"
            },
            {
                "title": "jkl"
            },
            {
                "title": "mno"
            }
        ]
    }
}

因此,为了获得所有项目的标题,请遍历line_items列表中的每个项目,查找'title'键,并将其值附加到名为purchased的空列表中:< / p>

purchased = []
for item in data['orders']['line_items']:
    if 'title' in item.keys():
        purchased.append(item['title'])
print(purchased)
#Output:
['abc', 'def', 'ghi', 'jkl', 'mno']

如果您还希望购买每件商品的数量,则可以使用Counter

from collections import Counter
print(Counter(purchased))
#Output:
Counter({'abc': 1, 'def': 1, 'ghi': 1, 'jkl': 1, 'mno': 1})