【问题标题】:What are the u's when I use json.loads? [duplicate]当我使用 json.loads 时,你是什么? [复制]
【发布时间】:2012-03-01 08:08:34
【问题描述】:

我一直在编写一个 Python 脚本来解析来自 Soundcloud API 的 JSON 信息,我只是想知道当我使用 json.loads(val) 时“u”是什么以及如何将 JSON 信息存储到没有 u 的对象?

即为什么会有你:

>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]

请参阅此处的“解码 JSON”部分以进一步了解我的意思:

http://docs.python.org/library/json.html

【问题讨论】:

标签: python json encode


【解决方案1】:

Unicode 字符串。请参阅Python Tutorial

在 Python 源代码中,Unicode 文字被编写为前缀为“u”或“U”字符的字符串:u'abcdefghijk'。

——Unicode Literals in Python Source Code

【讨论】:

    【解决方案2】:

    u's 表示应该创建一个 Unicode 字符串。

    json.dump 将字符串转换为 unicode 字符串并且没有留下任何痕迹,因为 json.load 无法转换回来,这很糟糕。

    要转换为字符串对象,请使用PyYAML:

    >>> import yaml
    >>> yaml.load('["foo", {"bar":["baz", null, 1.0, 2]}]')
    >>> ['foo', {'bar': ['baz', None, 1.0, 2]}]
    

    但要小心!如果由于某种原因您json.dumped 包含对象字符串和 unicode 字符串的对象,yaml 会将所有内容作为对象字符串加载(尽管这确实是json.dump 的错)

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 2020-12-05
      • 2022-11-02
      • 2012-06-02
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多