通过json.loads将Python字典转换为JSON:
我在处理一些代码,这些代码使用HTTP POST来发送数据,并且应该返回一个JSON结果,这个结果的内容是一个字典。我正在使用一个XML-RPC的封装器来提供这个服务。当这个封装器从HTTP响应变量中接收到字典信息时,字典的内容是以字符串的形式出现的,格式如下:
{'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 个回答
3
我在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]}]')
5
这个字典是用Python的字典格式写的,不是JSON格式。你可以这样做:
import ast
result = ast.literal_eval(response[1])
来读取这种格式的响应。你确定Django没有已经把响应转换成JSON格式吗?
36
你正在使用错误的方法。json.loads
是用来 把 JSON 数据加载到 Python 中 的。如果你想把 Python 的数据转换成 JSON 格式,你需要用 json.dumps
。
result = json.dumps(response[1])