在Python中将JSON字符串转换为字典

3

在request.body中得到了一个值,它的形式如下:

a = '[data={"vehicle":"rti","action_time":"2015-04-21 14:18"}]'

type(a) == str

我想将这个str转换为dict。我已经尝试过以下方法:
b=json.loads(a)

但是我得到了错误。
ValueError: No JSON object could be decoded

2
因为这不是 JSON 格式。data=... 是无效语法。 - JBernardo
2
it is not json format.. - Zealous System
这是我在一个POST请求中获取到的数据。而且数据只以这种格式传递,我将其作为request.body来接收。这就是为什么会出现问题。 - nilay gupta
3个回答

2
您收到的数据格式不是正确的JSON格式。在使用json模块进行转换之前,您需要进行一些解析或数据转换。
如果您知道数据始终以文本字符串'[data='开头,并以文本字符串']'结尾,并且其余部分是有效的JSON格式,则可以简单地去掉问题字符:
b = json.loads(a[6:-1])

如果数据不能保证完全符合该格式,您将需要了解实际格式,并进行更智能的解析。


0

您收到的不是一个有效的 JSON 格式。 有效的格式应该是:

'{"data":{"vehicle":"rti","action_time":"2015-04-21 14:18"}}'

这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言 - 您始终可以在自己的帖子上发表评论,并且一旦您拥有足够的声望,您将能够评论任何帖子 - ZdaR
我对这个问题的理解是,他在尝试加载字符串时为什么会出现ValueError。我认为这是一个有效的答案,它给出了一个指示,可以采取两种方式来寻找解决方案:如果他有控制权,则实施有效响应,否则尝试寻找替代解决方案,并在失败后发布一个具体的问题。 - chaos
2
这确实回答了这个问题。OP无法对响应进行JSON解码的原因是因为它不是有效的JSON。 - Uyghur Lives Matter

0
import json

a = '[data={"vehicle":"rti","action_time":"2015-04-21 14:18"}]'
r = a.split("=")
r[:] = r[0].replace("[", ""), r[1].replace("]", "") 
d = '{"%s":%s}'%(r[0],r[1])
dp = json.loads(d)  
print dp

a = ' [ data = { ' ' : ' ' } ] ' 的意思是这样的-- - nilay gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接