【问题标题】:Json Array to custom class array in typescriptJson Array 到 typescript 中的自定义类数组
【发布时间】:2019-09-29 10:28:16
【问题描述】:

我有关注 Json

[{"id":1,"role":"Admin"},{"id":2,"role":"Manager"},{"id":3,"role":"User"}]

我想对此进行迭代并添加到我的自定义类数组中,该数组在 angular typescript 中具有相同的属性(id、role、ischecked)。

我的自定义类

class Roles{
    ID:number;
    Role:string;
    Checked:Boolean;
} 

我怎样才能实现它?

【问题讨论】:

  • 自定义类数组是什么意思?你能分享一下预期的输出吗
  • 类角色{ ID:number;作用:字符串;选中:布尔值; }
  • 另外,根据您的编辑,因为当前数组对象没有 Checked 字段 - 您要么必须删除它,要么将其设为可选,如 Checked?:boolean
  • 我将 Checked 字段设为可选,但它不起作用。我想将此 json 数据转换为我的类数组 Roles[]。

标签: arrays json angular typescript


【解决方案1】:

给定数组:

  data = [
    { id: 1, role: "Admin" },
    { id: 2, role: "Manager" },
    { id: 3, role: "User" }
  ];

您可以使用以下语法:

let roles: Roles[] = this.data; 

角色应定义为:

export class Roles {
    id: number;
    role: string;
    checked?: Boolean;
} 
  1. 属性名称区分大小写
  2. checked 是可选的,现在由 ?: 表示

编辑

由于 API 以Roles[] 的格式返回响应,您可以简单地执行以下操作:

.subscribe((res: Roles[]) => { 
      let roles = res; 
   }
);

【讨论】:

  • 在分配给结果变量时,它给了我以下错误“将'string'类型转换为'Roles[]'类型可能是一个错误,因为这两种类型都没有与另一种充分重叠。如果这是故意的,首先将表达式转换为“未知”。”
  • 我进行了编辑。你可以试试吗?这是工作中的 stackblitz stackblitz.com/edit/new-del
  • 现在我收到此错误“类型'字符串'不可分配给类型'角色 []'。”实际上我正在使用 api 来获取这些数据并使用 JSON.stringify 函数将这些数据转换为 json。
  • 那么您也需要共享该代码。分享您如何订阅此 API 的代码..
  • this.http.get('api/user/GetAllRoles')。 subscribe(res => { let roles: Roles[] = JSON.stringify(res); console.log("api 角色"+ 角色) })
【解决方案2】:

如果你有这个 json 响应:

[{"id":1,"role":"Admin"},{"id":2,"role":"Manager"},{"id":3,"role":"User"}]

您应该将您的请求修改为:

this.http.get<Role[]>('api/user/GetAllRoles').subscribe((res: HttpResponse) => (roles = res));

这会将响应转换为Role[],而不需要JSON.stringify。 在你必须声明roles: Role[]之前。

【讨论】:

    猜你喜欢
    • 2019-10-17
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2019-11-28
    • 2015-10-16
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    相关资源
    最近更新 更多