繁体   English   中英

在python中用值双引号解码JSON文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM