我正在从AWS(从javascript文件)中删除一些JSONP词典.在仅解析类似JSON数据的原始数据之后,在某些情况下,我获得了一个有效的JSON,并且可以在Python(json_data = json.loads(json_like_data))中成功加载它.但是,亚马逊的一些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"}}]},
...
Run Code Online (Sandbox Code Playgroud)
对于JSONP,这仍然有效,因为它是有效的JavaScript语法.但是,json.loads(json_str)由于它不是有效的JSON,所以Python很糟糕.
还有另一个Python模块YAML可以处理不带引号的键,但是在分号(:)之后必须有一个空格.
我认为我有两个选择.
{| ,)和冒号(:)之间的字符.然后用json.loads(...).:)之后添加一个空格.然后解析yaml.load(...).我的猜测是选项2优于1.然而,我正在寻求更好的解决方案的建议.
有没有人遇到像这样的格式错误的JSON,并使用Python来解析它?