2012-03-01 4 views
0

Я пытаюсь использовать simplejson.loads(source_urls), чтобы превратить JSON в объект Python.Невозможно использовать simplejson.loads() в строке

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) 

Кто-нибудь есть какие-нибудь мысли?

+1

Это выглядит точно так же, как строка кода Python. Я ничего не вижу в JSON. Почему у вас есть такие строки в db? –

ответ

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) 

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

+0

Это сработало. Огромное спасибо! –

+0

Аст чувствует себя молниеносно по сравнению с модулем json – enthus1ast

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_urls не кодируется simplejson.dumps .. Надеюсь, что это помогает ..