首页 > 解决方案 > 将 JSON 解析为 Angular 对象?

问题描述

我有一个类似于以下的 JSON:

{
  "A01": "DescA",
  "A02": "DescB",
  "A03": "DescC",
  "A04": "DescE"
}

和这样定义的类:

export class Element {
    public id: string;
    public description: string;
}

如何解析 JSON 并使用等获取Element数组?el[0].id == "A01"el[0].description == "DescA"

标签: jsonangulartypescript

解决方案


由于您的 JSON 具有“自定义”结构(这意味着它与序列化Element对象的结果不同),因此您需要手动分配值

class Element {
    id = "";
    description = "";
    
    
    constructor(id, desc){
       this.id = id;
       this.description = desc;
    }
};

const apiResult = {
  "A01": "DescA",
  "A02": "DescB",
  "A03": "DescC",
  "A04": "DescE"
};



const elementArray = Object.keys(apiResult).map(key => new Element(key, apiResult[key]));

console.log(elementArray);

或者(我假设您使用的是 Angular 2+)您可以使用typestack/class-transformer库通过使用装饰器从 JSON 解析/反序列化。它有一些优点,例如嵌套反序列化。


推荐阅读