添加双引号字符串以返回 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章