[英]Decoding JSON file in python with double quotes in value
我需要这个问题的潜在解决方法。 我有一个Web服务,可以直接从数据库中提取一些数据并将其保存为JSON文件(事实证明是强制执行的)。
正常的工作数据像这样:
[
{
"number" : 1,
"title" : "title 1",
"description" : "description 1"
},
{
"number" : 2,
"title" : "title 2",
"description" : "description 2"
}
]
但是有时数据库中的描述字段可能已经从Outlook复制了电子邮件,然后JSON如下所示:
[
{
"number" : 3,
"title" : "title 3",
"description" : "description by dawid.smith<"dawid@smith.com"> 1"
},
{
"number" : 4,
"title" : "title 4",
"description" : "description 2"
}
]
对我来说,这是可以理解的:
with open('json_test.json', 'r') as lista_json:
jsony = json.load(lista_json)
由于以下原因,无法在电子邮件的双引号上使用JSON:
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 5 column 50 (char 98)
考虑到实际的JSON可能包含大量的整数,我认为如果找到电子邮件,逐行地对它进行正则化将花费很多精力。
是否有任何变通办法可以某种方式绕过key值“ description”中的双引号?
您无法解析输入,因为它不是有效的JSON。 您必须事先修复它。 假设仅有的坏情况是<"
和">
,则可以使用sed
来做到这一点,如下所示:
% sed -E 's/<"/\\"/g; s/">/\\">/g' input.txt | python -m json.tool
[
{
"number": 3,
"title": "title 3",
"description": "description by dawid.smith\"dawid@smith.com\"> 1"
},
{
"number": 4,
"title": "title 4",
"description": "description 2"
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.