2016-01-31 49 views
1

我將這個簡化數組轉換爲JSON。出於某種原因,它不起作用。在Python中將字符串轉換爲JSON

import json 
arr = "[{u'symbol': u'YTLREIT', u'code': u'5109', u'name': u'YTL HOSPITALITY REIT'}]" 
data = json.loads(arr) 

我收到的錯誤,

ValueError: Expecting property name: line 1 column 3 (char 2)

+0

哪裏是這個數據是從哪裏來的? – alecxe

回答

3

這不是一個有效的JSON,但您可以用ast.literal_eval()加載:

>>> from ast import literal_eval 
>>> literal_eval(arr) 
[{u'symbol': u'YTLREIT', u'code': u'5109', u'name': u'YTL HOSPITALITY REIT'}] 
+0

謝謝。有用!它看起來像一個有效的JSON。是什麼讓它不是一個有效的JSON? – geckob

+1

@geckob在報價和報價本身之前附加'u'標誌 - 它們必須是雙引號。它實際上看起來像一個列表的字符串表示。如果您可以控制生成它的工具,那麼應該調整它以生成有效的JSON - 如果是Python,json.dump或json.dumps。 – alecxe

+0

@alecxe放雙引號的原因是什麼?爲什麼不單單引用? –