首页 > 解决方案 > Python:将字典转换为字节

问题描述

我正在尝试将字典转换为字节,但在将其转换为正确格式时遇到问题。

首先,我正在尝试使用自定义模式映射字典。架构定义如下 -

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.loads期望输入是 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'

任何建议如何将字典转换为字节?

标签: pythondictionary

解决方案


您可以使用indentoption injson.dumps()来获取\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}'

推荐阅读