0

我试图用来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)

有人有什么想法吗?

4

2 回答 2

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)

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

于 2012-03-01T21:55:23.843 回答
1

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_urls 字符串不是由 simplejson.dumps 编码的。希望这会有所帮助。

于 2012-03-01T22:22:32.573 回答