2012-03-01 48 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中有這樣的字符串? – 2012-03-01 21:53:14

回答

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) 

這不會讓真正的代碼執行。它只處理「字符串,數字,元組,列表,字典,布爾值和無」。

+0

這工作。非常感謝! – 2012-03-02 14:55:05

+0

與json模塊相比,ast感覺閃電般快速 – enthus1ast 2013-04-27 21:03:24

0

JSON中的所有字符串都必須用雙引號括起來。 Refernece: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編碼..希望這會有所幫助..