无法在字符串上使用simplejson.loads()

时间:2012-03-01 21:50:52

标签: python json simplejson

我正在尝试使用simplejson.loads(source_urls)JSON转换为Python对象。

source_urls = [u'http://www.google.com', u'http://www.yahoo.com', u'http://www.facebook.com']

该行来自记录器输出。尽管看起来像一个列表,它实际上存储为数据库中的字符串。

我收到以下错误:

JSONDecodeError:
Expecting object: line 1 column 1 (char 1)

有人有任何想法吗?

2 个答案:

答案 0 :(得分:4)

假设您确实有一个字符串source_urls包含:

"[u'http://www.google.com', u'http://www.yahoo.com', u'http://www.facebook.com']"

你可以这样做:

import ast
urls = ast.literal_eval(source_urls)

这不允许真正的代码执行。它只处理“字符串,数字,元组,列表,字符串,布尔值和无”。

答案 1 :(得分:0)

JSON中的所有字符串必须用双引号括起来。参考:http://simonwillison.net/2006/oct/11/json/

source_urls = '["http://www.google.com", "http://www.yahoo.com", 
                "http://www.facebook.com"]'
simplejson.loads(source_urls)
['http://www.google.com', 'http://www.yahoo.com', 'http://www.facebook.com']

看起来source_files字符串不是由simplejson.dumps编码的。希望这会有所帮助..