添加双引号字符串以返回 JSON [重复]

Posted

技术标签:

【中文标题】添加双引号字符串以返回 JSON [重复]【英文标题】:Add double quotes string to return JSON [duplicate] 【发布时间】:2021-12-16 06:44:54 【问题描述】:

目前我正在使用split 解析一个字符串并返回以下内容

fruit1:"Apple",fruit2:"Orange",fruit3:"Pear"

我想使用 json.loads 将此字符串转换为 json,但出现以下错误

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes

我将如何在这个字符串中添加双引号,以便我可以在下面执行所需的结果

food = '"fruit1":"Apple","fruit2":"Orange","fruit3":"Pear"'

print(food['fruit1'])

-----------

Apple

【问题讨论】:

为什么不首先使用json.dumps() 创建字符串? 这根本不是 JSON 输入。也许是javascript?如果您将其创建为 JSON,则不会出现此问题。如果您真的想将其他 JavaScript 转换为 JSON,最好的方法是使用 JavaScript 解释器。 最简单的方法是首先将字符串写成正确的 JSON。那个字符串是从哪里来的?看起来像其他人所说的JS,但是JS提供了将对象转换为有效json的功能:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 您不能可靠地添加引号 - 需要引号和转义序列才能使输入明确。 【参考方案1】:

至少在这种情况下,您可以将字符串视为jq 过滤器,并使用Python bindings for jq(第三方包,不在标准库中)将其评估为dict 对象。

>>> import jq
>>> d = jq.first('fruit1:"Apple",fruit2:"Orange",fruit3:"Pear"', None)
>>> d['fruit1']
'Apple'

【讨论】:

我在链接的副本中没有看到这个建议——它可能值得在那里添加作为答案。 我很高兴让其他人添加答案。我对 JavaScript 了解的不够多,无法知道 jq 过滤器是否是“原始 JavaScript 对象”的超集。 谢谢@chepner

以上是关于添加双引号字符串以返回 JSON [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将带单引号的字符串转换为双引号以进行 json 解析

构建字符串在两个变量之间添加双引号[重复]

PHP在json字符串中的变量前后添加双引号

由于添加了双引号,json对象变成了字符串?

Python如何将单引号转换为双引号以格式化为json字符串

序列化包含转义(反斜杠和双引号)的 JSON 字符串 Swift 返回格式错误的对象