Python dict to JSON via JSON.loads:

2024-06-01 00:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我对一些使用HTTP POST发送数据并应返回其内容为字典的JSON结果的代码进行了故障排除。我正在使用XML-RPC包装器来公开此服务。当包装器从http响应变量接收dict信息时,dict内容以以下形式显示在字符串中:

{'created': datetime.datetime(2010, 12, 31, 19, 13, 8, 379909), 'worker': u'GoogleWorker', 'ready': False, 'request_id': '8f1381853a444a42a37ae5152a3af947', 'owner': u'admin', 'shortname': u'test19'}

我试图使用以下语句将下面的字符串转换为JSON结果:

result = json.loads(response[1])

但是,当我尝试使用json.loads将数据转换为json时,会出现以下错误:Fault: <Fault 1: "<type 'exceptions.ValueError'>:Expecting property name: line 1 column 1 (char 1)">

我手动尝试将上面的字符串转换为JSON,但得到了相同的错误。听写在某种程度上有问题吗?是因为unicode吗?我还尝试将区域设置为UTF-8,但没有成功。

任何帮助都将不胜感激。


Tags: 字符串代码jsonhttp内容datetime字典错误
3条回答

dict是Python dict literal格式,而不是JSON格式。你可以:

import ast
result = ast.literal_eval(response[1])

以这种格式读取响应。您确定Django还没有对响应进行JSON解码吗?

你想用错误的方法。json.loads用于将JSON加载到Python。如果要将Python转换为JSON,则需要json.dumps

result = json.dumps(response[1])

我在django上使用了json,我使用这个:

import simplejson as json
#to encode
final= {'first':first_data,'second':second_data}
json.dumps(final)
#to decode this is the example from python's api 
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')

相关问题 更多 >