【问题标题】:JSON like string with unicode to valid JSONJSON 之类的字符串,带有 unicode 到有效的 JSON
【发布时间】:2023-03-31 03:05:02
【问题描述】:

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

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

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

【问题讨论】:

  • 能否确认第一个键key和数据之间是否有冒号':'? {u'key'[{
  • 你是对的,有一个冒号。已更正。
  • 这根本不是 JSON,而是 Python dict 的 repr。

标签: python json python-2.7 unicode


【解决方案1】:

您可以为此使用来自ast 模块的literal_eval

ast.literal_eval(yourString)

然后您可以将此对象转换回 JSON。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 2021-02-27
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多