import json
from enum import Enum
from dataclasses import dataclass, asdict
from typing import Any
@dataclass
class StatusItem:
code: int
msg: str
class Status(Enum):
SUCCESS = StatusItem(200000, "success")
NO_AUTH = StatusItem(300001, "No authorization!")
class EnumEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Status):
return asdict(obj.value)
return json.JSONEncoder.default(self, obj)
@dataclass
class Response:
status: Status
data: Any
def json(self) -> str:
return json.dumps(asdict(self), cls=EnumEncoder)
print(Response(Status.SUCCESS, {"age": 100}).json())
之后的所有响应都直接调用"json()"方法即可。
,
在您提供的代码中,有几个问题需要解决:
1. "Status"枚举类中的"NO_AUTH"值字符串没有正确闭合。
2. "json_dumps"方法中的"json.dumps"调用存在语法错误。
3. 在"json.dumps"调用中,"f'code': res.value"不是有效的字典格式。
以下是修正后的代码:
python
import json
from enum import Enum
class Status(Enum):
SUCCESS = (200000, 'success')
NO_AUTH = (300001, 'No authorization')
class Utils:
@staticmethod
def json_dumps(res: Status, data):
# 使用字典格式,并确保字符串正确闭合
response = {
'code': res.value[0],
'message': res.value[1],
'data': data
}
return json.dumps(response)
示例使用
print(Utils.json_dumps(Status.SUCCESS, {'age': 25}))
这段代码定义了一个枚举类"Status",包含两个枚举值"SUCCESS"和"NO_AUTH",每个值都有一个元组,包含状态码和消息。"Utils"类中的"json_dumps"静态方法接受一个"Status"枚举值和一个数据对象,然后构建一个响应字典,并使用"json.dumps"将其转换为JSON格式的字符串。最后,示例调用"Utils.json_dumps"方法,并打印结果。