Python使字符串json可加载

时间:2017-02-01 01:59:26

标签: python json

我有这个字符串:

> x.data
u'{u"orderNumber": u"69898327728", u"resultingTrades": []}'

如何将其转换为json?这不起作用:

> import json
> json.dumps(x.data)
'"{u\\"orderNumber\\": u\\"69898327728\\", u\\"resultingTrades\\": []}"'

它只是创建一个长字符串。我需要将它转换为json,以便稍后我可以json.loads并访问dict中的键,如下所示:

y = json.loads(x.data)["orderNumber"]

2 个答案:

答案 0 :(得分:2)

我在字符串中看到的问题是它包含密钥的python u""格式。

现在,如果您信任您的字符串并且您知道它将保持该格式,您可以使用eval(x.data)取回字典,但eval非常危险。

json.loads(json.dumps(eval(a)))

如果我是你,我会付出更多的努力来确保你能得到一个更好的字符串来处理,如果这是你的力量。

如果没有,您可以尝试手动删除引号和u

data = x.data.replace('u"', "")
data = data.replace('"', "")
json.loads(json.dumps(data))

答案 1 :(得分:2)

您可以使用ast.literal_eval将数据转换为dict

>>> import ast
>>> data = u'{u"orderNumber": u"69898327728", u"resultingTrades": []}'
>>> d = ast.literal_eval(data)
>>> d['orderNumber']
u'69898327728'

然后您可以正常使用dumpsloads

>>> import json
>>> ext = json.dumps(d)
>>> ext
'{"orderNumber": "69898327728", "resultingTrades": []}'
>>> json.loads(ext)['orderNumber']
u'69898327728'