Python:不引用错误的JSON键

2024-05-18 17:51:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从AWS(从javascript文件)中抓取一些JSONP字典。在只为类似JSON的数据解析原始数据之后,在某些情况下,我得到了一个有效的JSON,并且可以在Python(json_data = json.loads(json_like_data))中成功地加载它。然而,一些Amazon的jsonp不在它们的键周围包含引号(见下文)。

...
{type:"storageCurrentGen",sizes:
[{size:"i2.xlarge",vCPU:"4",ECU:"14",memoryGiB:"30.5",storageGB:"1 x 800 SSD",valueColumns:[{name:"linux",prices:{USD:"0.938"}}]},
{size:"i2.2xlarge",vCPU:"8",ECU:"27",memoryGiB:"61",storageGB:"2 x 800 SSD",valueColumns:[{name:"linux",prices:{USD:"1.876"}}]},
{size:"i2.4xlarge",vCPU:"16",ECU:"53",memoryGiB:"122",storageGB:"4 x 800 SSD",valueColumns:[{name:"linux",prices:{USD:"3.751"}}]},
...

对于JSONP,这仍然有效,因为它是有效的JavaScript语法。然而,Python的json.loads(json_str)是无效的。

还有一个Python模块YAML可以处理未加引号的键,但分号(:)后面必须有空格。

我想我有两个选择。

  1. 不知何故,在大括号或逗号({| ,)和冒号(:)之间替换字符。然后使用json.loads(...)
  2. 在ever冒号后添加空格(:)。然后用yaml.load(...)解析。

我想选择2比选择1好。不过,我正在寻求更好的解决办法。

以前有没有人遇到过这种格式不正确的JSON并使用Python来解析它?


Tags: namejsonsizelinuxpricesusdssdloads

热门问题