函数返回一个字典,其中包含字节类型的数据。因为它在里面,它给出了一个字典,我无法进行简单的转换,使用
value.decode('ISO-8859-1')
我需要遍历整个字典及其内部数据来验证数据类型,以便用解码覆盖它。 为了进行模拟,我留下了一个返回相同错误的示例代码:
import json
dictionary ={
"id": "04",
"name": "sunil",
"code": b"HR"
}
json_object = json.dumps(dictionary, indent = 4)
print(json_object)
我想将字典内的内部字节数据转换为一些 str,以便我可以生成 json 。
import json
dictionary ={
"id": "04",
"name": "sunil",
"code": b"HR".decode('UTF-8')
}
json_object = json.dumps(dictionary, indent = 4)
print(type(json_object))
不确定您的字典是否有错误?但如果不尝试这个?
我用这个递归函数解决了我的问题。
def decodeDictionary(dictionary):
if type(dictionary) == dict:
for key in dictionary.keys():
dictionary[key] = decodeDictionary(dictionary[key])
elif type(dictionary[key]) == bytes:
dictionary = dictionary.decode('ISO-8859-1')
return dictionary
之前的解决方案是正确的,但它存在局部变量的问题。它会返回一个错误: 无法访问未与值关联的局部变量“key”。
只需将代码修改为:
def decodeDictionary(dictionary):
if type(dictionary) == dict:
for key in dictionary.keys():
dictionary[key] = decodeDictionary(dictionary[key])
elif type(**dictionary**) == bytes:
dictionary = dictionary.decode('ISO-8859-1')
return dictionary