How to get string objects instead of Unicode from JSON?

前端 未结 21 921
伪装坚强ぢ
伪装坚强ぢ 2020-11-22 14:43

I\'m using Python 2 to parse JSON from ASCII encoded text files.

When loading these files with either json or simplejson, all my

21条回答
  •  失恋的感觉
    2020-11-22 15:30

    Support Python2&3 using hook (from https://stackoverflow.com/a/33571117/558397)

    import requests
    import six
    from six import iteritems
    
    requests.packages.urllib3.disable_warnings()  # @UndefinedVariable
    r = requests.get("http://echo.jsontest.com/key/value/one/two/three", verify=False)
    
    def _byteify(data):
        # if this is a unicode string, return its string representation
        if isinstance(data, six.string_types):
            return str(data.encode('utf-8').decode())
    
        # if this is a list of values, return list of byteified values
        if isinstance(data, list):
            return [ _byteify(item) for item in data ]
    
        # if this is a dictionary, return dictionary of byteified keys and values
        # but only if we haven't already byteified it
        if isinstance(data, dict):
            return {
                _byteify(key): _byteify(value) for key, value in iteritems(data)
            }
        # if it's anything else, return it in its original form
        return data
    
    w = r.json(object_hook=_byteify)
    print(w)
    

    Returns:

     {'three': '', 'key': 'value', 'one': 'two'}
    

提交回复
热议问题