Python通过json.loads dict到JSON:

时间:2010-12-31 18:27:38

标签: python django json http-post

我已经对使用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,但这不成功。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:33)

您正在尝试使用错误的方法。 json.loads用于将JSON加载到Python 。如果要将Python转换为JSON,则需要json.dumps

result = json.dumps(response[1])

答案 1 :(得分:5)

该dict是Python dict文字格式,而不是JSON。你可以这样做:

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

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

答案 2 :(得分: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]}]')