我有这个字符串:
> 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"]
答案 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'
然后您可以正常使用dumps
和loads
:
>>> import json
>>> ext = json.dumps(d)
>>> ext
'{"orderNumber": "69898327728", "resultingTrades": []}'
>>> json.loads(ext)['orderNumber']
u'69898327728'