【问题标题】:Add double quotes string to return JSON [duplicate]添加双引号字符串以返回 JSON [重复]
【发布时间】: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/…
  • 您不能可靠地添加引号 - 需要引号和转义序列才能使输入明确。

标签: python scripting


【解决方案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
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 2013-04-19
相关资源
最近更新 更多