如何正确解析json。 TypeError字符串索引必须为整数

时间:2019-03-25 15:06:36

标签: python json

我是Python的新手,我的第一个json解析失败。我已经尝试了很多代码组合来从api请求中提取2个字段(StoreName和StockCount),但是不知道我要去哪里。这应该很容易,但是我想不起来...谢谢。

到目前为止的代码...

import json
import requests
bunn_stock_api = 'https://www.bunnings.com.au/api/v1/store/6432/nearest/3/'
bunn_product_id = '3020069'
get_stock_url = bunn_stock_api + bunn_product_id
stock_json_data = requests.get(get_stock_url).json()
stocklist = list(json.dumps(stock_json_data))
for item in stocklist:
    print(item[0]['StoreNumber']['StoreName'])
    print(item[0]['StoreNumber']['StockStatus']['StockCount'])

json响应,其中删除了多余的非重要信息

[
    {
    "StoreNumber":"6140",
    "StoreInfo":{
        "StoreNumber":0,
        "StoreName":"Nunawading",
        "CurrentTradingHours":{
            "IsOpen":true,
        }
    },
    "StockStatus":[
        {
        "ItemNumber":"3020069",
        "Code":3,
        "Message":"In stock",
        "StockCount":21
      }
    ]
  },
    {
    "StoreNumber":"6230",
    "StoreInfo":{
        "StoreNumber":0,
        "StoreName":"Vermont South",
        "CurrentTradingHours":{
            "IsOpen":true,
        }
    },
    "StockStatus":[
        {
        "ItemNumber":"3020069",
        "Code":3,
        "Message":"In stock",
        "StockCount":15
      }
    ]
  }
]

我知道这个问题已经被回答过很多次了,但是我无法在json响应中使用任何答案。

1 个答案:

答案 0 :(得分:0)

json方法已经返回要迭代的列表,而不是需要处理的字符串。

stocklist = requests.get(get_stock_url).json()
for item in stocklist:
    print(item[0]['StoreNumber']['StoreName'])
    print(item[0]['StoreNumber']['StockStatus']['StockCount'])

如果 did requests.get(...).text()获取原始JSON,则您想使用json.loads 解码该值,而不是对其进行进一步编码与json.dumps

json_data = requests.get(get_stock_url).text
stocklist = json.loads(json_data)
for item in stocklist:
    ...