Невозможно использовать simplejson.loads () для строки - PullRequest
0 голосов
/ 02 марта 2012

Я пытаюсь использовать 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 ]

4 голосов
/ 02 марта 2012

Предполагая, что у вас действительно есть одна строка 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)

Это не позволит выполнить истинный код. Он обрабатывает только «строки, числа, кортежи, списки, диктанты, логические значения и None».

0 голосов
/ 02 марта 2012

Все строки в 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 .. Надеюсь, это поможет ..

...