Python通过json.loads dict到JSON:

Nic*_*uiz 20 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'}
Run Code Online (Sandbox Code Playgroud)

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

result = json.loads(response[1])
Run Code Online (Sandbox Code Playgroud)

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

我手动尝试将上面的字符串转换为JSON,但我得到了同样的错误.这个词典在某种程度上是不正确的吗?是unicode吗?我也尝试将语言环境设置为UTF-8,但这不成功.

任何帮助将不胜感激.

Dan*_*man 33

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

result = json.dumps(response[1])
Run Code Online (Sandbox Code Playgroud)


Spi*_*nim 5

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

import ast
result = ast.literal_eval(response[1])
Run Code Online (Sandbox Code Playgroud)

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

  • literal_eval不适用于datetime对象.但我怀疑你说其他东西已经在解析它了. (2认同)