Python:将字典转换为字节
我正在尝试将字典转换为字节,但在将其转换为正确格式时遇到问题 首先,我尝试用自定义模式映射字典。模式定义如下-Python:将字典转换为字节,python,dictionary,Python,Dictionary,我正在尝试将字典转换为字节,但在将其转换为正确格式时遇到问题 首先,我尝试用自定义模式映射字典。模式定义如下- class User: def __init__(self, name=None, code=None): self.name = name self.code = code class UserSchema: name = fields.Str() code = fields.Str() @post_load def cr
class User:
def __init__(self, name=None, code=None):
self.name = name
self.code = code
class UserSchema:
name = fields.Str()
code = fields.Str()
@post_load
def create_userself, data):
return User(**data)
我的字典结构如下-
user_dict = {'name': 'dinesh', 'code': 'dr-01'}
我正试图用下面的代码将字典映射到用户模式
schema = UserSchema(partial=True)
user = schema.loads(user_dict).data
执行此操作时,schema.load希望输入为str、bytes或bytearray。下面是我将字典转换为字节所遵循的步骤
import json
user_encode_data = json.dumps(user_dict).encode('utf-8')
print(user_encode_data)
输出:
b'{"name ": "dinesh", "code ": "dr-01"}
如果我尝试使用模式进行映射,则无法获得所需的模式对象。但是,如果我有下面给出的格式的输出,我就能够得到正确的模式对象
b'{\n "name": "dinesh",\n "code": "dr-01"}\n'
有什么建议可以将字典转换为字节吗?您可以使用
json.dumps()
中的indent
选项获取\n
符号:
import json
user_dict = {'name': 'dinesh', 'code': 'dr-01'}
user_encode_data = json.dumps(user_dict, indent=2).encode('utf-8')
print(user_encode_data)
输出:
b'{\n "name": "dinesh",\n "code": "dr-01"\n}'
您可以使用Base64库将字符串字典转换为字节,尽管您可以使用json库将字节结果转换为字典。尝试下面的示例代码
import base64
import json
input_dict = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]}
message = str(input_dict)
ascii_message = message.encode('ascii')
output_byte = base64.b64encode(ascii_message)
msg_bytes = base64.b64decode(output_byte)
ascii_msg = msg_bytes.decode('ascii')
# Json library convert stirng dictionary to real dictionary type.
# Double quotes is standard format for json
ascii_msg = ascii_msg.replace("'", "\"")
output_dict = json.loads(ascii_msg) # convert string dictionary to dict format
# Show the input and output
print("input_dict:", input_dict, type(input_dict))
print()
print("base64:", output_byte, type(output_byte))
print()
print("output_dict:", output_dict, type(output_dict))
我们不需要
indent=2
,所以json.dumps(用户dict).encode('utf-8')
就足够了