【问题标题】:Python2 json: load using strings instead of unicode [duplicate]Python2 json:使用字符串而不是unicode加载[重复]
【发布时间】:2017-07-11 16:31:33
【问题描述】:

我有一个 json 字符串,我想使用内置的 json 模块将其解析为字典。我可以使用loads() 做到这一点,如下所示:

>>> j = '''{
...   "first": 1,
...   "second": "two",
...   "third": {
...     "first": "one",
...     "second": null
...   }
... }'''
>>> d = json.loads(j)
>>> pprint(d)
{u'first': 1,
 u'second': u'two',
 u'third': {u'first': u'one',
            u'second': None}}

问题是所有内容都加载为unicode。有没有办法强制 python 将所有内容加载为string?或者,是否有一种简单的方法可以在创建 dict 后进行深度转换。

注意:因为我知道人们会问,所以假设我得到的键和值将只包含 ASCII 字符和符号是安全的,所以我不会有特殊字符的问题。

【问题讨论】:

    标签: python json string dictionary


    【解决方案1】:

    您可以向json.loads() 提供object_hookobject_pairs_hook 参数。

    from pprint import pprint
    import json
    
    def str_hook(obj):
        return {k.encode('utf-8') if isinstance(k,unicode) else k :
                v.encode('utf-8') if isinstance(v, unicode) else v
                for k,v in obj}
    
    j = '''{
      "first": 1,
      "second": "two",
      "third": {
        "first": "one",
        "second": null
      }
    }'''
    d = json.loads(j, object_pairs_hook=str_hook)
    pprint(d)
    

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 1970-01-01
      • 2014-10-26
      • 2019-12-23
      • 1970-01-01
      • 2016-07-04
      • 2015-04-15
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多