2014-09-29 19 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'}]}