尝试在 python 中解析时出现 JSON 键错误
Posted
技术标签:
【中文标题】尝试在 python 中解析时出现 JSON 键错误【英文标题】:JSON key error when attempting to parse in python 【发布时间】:2022-01-04 14:46:45 【问题描述】:我提出了一个 API 请求:
# set up the request parameters
params =
'api_key': 'XXXXXXXXXXXXXXXXXXXXXXXXX',
'type': 'product',
'item_id': 'XXXXXXXXX',
'url': 'https://www.somestore.com',
'output': 'json'
# make the http GET request to the API
api_result = requests.get('https://api.shopperapi.com/request', params)
product_data = json.loads(api_result.text)
if ((product_data["product.buybox_winner.seller.name"]=="MyStore.com") and (product_data["product.buybox_winner.availability.in_stock"]=="False")):
my_Mailer("Its out of stock")
JSON 格式为:
"request_info": ,
"request_metadata": ,
"request_parameters": ,
"product":
"brand": "XXX",
"title": "MyProductName",
"upc": "XXXXXXXX",
"item_id": "XXXXXXXXXX",
"product_id": "XXXXXXXXXX",
"item_number": "XXXXXXXXX",
"model": "85888",
"ratings_total": 45,
"rating": 4.6,
"type": "Housewares",
"buybox_winner":
"price": 100.0,
"was_price": 199.95,
"currency_symbol": "$",
"id": "XXXXXXXXXXXXXXXXXXXXXXXX",
"":
"name": "MyStore.com",
"id_secondary": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXX"
,
"availability":
"raw": "OUT_OF_STOCK",
"in_stock": false,
"preorder": false
我的错误是 KeyError: 'product.buybox_winner.seller.name'
我似乎无法解析这个 JSON 文件,因为我不知道如何正确引用密钥来检查它。
【问题讨论】:
这能回答你的问题吗? How to access an element inside a nested dictionary in python?"product.buybox_winner.seller.name"
字典中不存在此键。看来您正在尝试访问 json 中的路径。字典不支持。你需要做product_data['product']['buybox_winner']['seller']['name']
【参考方案1】:
尝试以下方法:
product_data['product']['buybox_winner']['seller']['name']
您需要以这种方式使用键值访问 JSON。
【讨论】:
以上是关于尝试在 python 中解析时出现 JSON 键错误的主要内容,如果未能解决你的问题,请参考以下文章
Web Scraping:在 Python 中解析 JSON 时出现 KeyError
尝试在 iOS 7 下使用 SwiftyJSON 解析 JSON 数据时出现未知类型
在尝试解析 JSON 数据 W/System.err 时出现此错误:org.json.JSONException:对客户没有价值
解析“......没有方法'replace'”时出现JSON错误