json - 如何将枚举变体作为整数发送,而不是 Angular 中的字符串
问题描述
我正在使用 Angular 11,并且必须将一些数据发布到后端服务。这是我需要发布的数据:
interface User {
id: Guid; // Guid is just a type alias to string, with some validation checks
email: string;
role: Role
}
enum Role {
User = 0,
Administrator = 1
}
现在,当我尝试使用来自 Angular 的默认 HttpClient 发布到我的后端时,问题就来了。这是代码:
createOrUpdateUser(user: User): Observable<User> {
return this.http.post<User>(`${this.baseUrl}/${this.userUrl}/${this.userCreateOrUpdate}`, user);
}
这工作正常,但发送的 JSON 是“错误的”。它发送这个:
{
"id": "2abe50d6-4c81-4ace-ad95-c8182d4384a3",
"email": "someEmail@example.org",
"role": "0"
}
后端期望这个
{
"id": "2abe50d6-4c81-4ace-ad95-c8182d4384a3",
"email": "someEmail@example.org",
"role": 0
}
不同之处在于后端期望"role": 0
,但 Angular 发送"role": "0"
。如何让 Angular 发送"role": 0
?
解决方案
您可以在发送之前使用 + 将其设为数字 api user.role = +user.role。在其他地方,您在用户对象中分配角色的值,将其作为字符串。它不是枚举问题。
推荐阅读
- python-3.x - 为什么 .get 给我 PY_VAR0 而不是字符串
- javascript - 如何使用startsWith过滤和获取每个对象键的值?
- php - 如何确保 Laravel 单一身份验证?
- powershell - using module $PSScriptRoot: is not a valid value for using name
- r - 有效地将 XML 转换为数据框
- python - 获取变量的变化率
- wcf - 未触发 Global.asax 方法
- python-3.x - 使用 --user 选项后的 Docker 权限错误
- objective-c - 在 iOS 13 中使用自定义高度呈现模态
- php - 如何在零停机时间的水平扩展设置中使用 Laravel 迁移?