JSON就像使用unicode到有效JSON的字符串一样

时间:2014-09-29 08:03:03

标签: python json python-2.7 unicode

我得到一个类似于JSON的字符串,我正在尝试使用python将其转换为有效的JSON。 它看起来像这个例子,但实际数据变得很长:

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

所以还有很多特殊字符,以及“错误”布尔值,它应该只是小写字母。 我对我得到的数据没有任何影响,我只需要以某种方式解析它并从中提取一些东西。 我试图替换特殊字符和所有内容并强制它成为有效的JSON,但它并不优雅,我很容易忘记替换一种特殊字符。

2 个答案:

答案 0 :(得分:3)

您可以使用literal_eval模块中的ast来实现此目的。

ast.literal_eval(yourString)

然后,您可以将此Object转换回JSON。

答案 1 :(得分:0)

JSON规范仅允许javascript数据(truefalse用于布尔值,nullundefined用于None属性等) 这个问题的字符串,它是一个python对象,所以@ florian-dreschsler说,你必须使用literal_eval模块中的ast

>>> 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'}]}