2014-09-29 20 views
0

我得到一個類似於JSON的字符串,我試圖使用python將其轉換爲有效的JSON。 它看起來像這樣的例子,但很長的真實數據得到:JSON像字符串與Unicode到有效的JSON

{u'key':[{ 
     u'key':u'object', 
     u'something':u'd\xfcabc', 
     u'more':u'\u2023more', 
     u'boolean':True 
    }] 
} 

所以也存在着很多的特殊字符,以及「錯誤」的boolean值,它應該只是小寫字母。 我對獲得的數據沒有任何影響力,我只需要以某種方式解析它並從中提取一些內容。 我試圖替換特殊字符和所有東西,並強制它成爲一個有效的JSON,但它並不優雅,我很容易忘記替換一種特殊字符。

+1

你能否證實,如果有一個冒號「:」第一個關鍵'key'和數據之間? '{u'key'[{' – Abhijit 2014-09-29 08:08:12

+0

你是對的,有一個冒號。糾正。 – Chris 2014-09-29 08:12:30

+0

這根本不是JSON,而是Python字典的repr。 – 2014-09-29 08:33:35

回答

3

對此,您可以使用ast模塊中的literal_eval

ast.literal_eval(yourString)

然後,您可以轉換這個對象回JSON。

0

JSON規範只允許JavaScript數據(truefalse爲布爾值,nullundefinedNone性質等)
這一問題的字符串,它是一個Python對象,從而爲@弗洛裏安 - dreschsler說,你必須使用literal_evalast模塊

>>> import ast 
>>> json_string = """ 
... {u'key':[{ 
...  u'key':u'object', 
...  u'something':u'd\xfcabc', 
...  u'more':u'\u2023more', 
...  u'boolean':True, #this property fails with json module 
...  u'null':None,  #this property too 
...  }] 
... } 
... """ 
>>> ast.literal_eval(json_string) 
{u'key': [{u'boolean': True, u'null': None, u'something': u'd\xfcabc', u'key': u'object', u'more': u'\u2023more'}]}