json - 将 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"
解决方案
由于您的 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 解析/反序列化。它有一些优点,例如嵌套反序列化。
推荐阅读
- python - 区分“字符串”和“整数”
- c - 在 C 中的 typedef 中定义变量的位/字节解释
- javascript - 在javascript中将对象数组转换为字符串
- angular - 在没有 Amplify 的情况下将 AWS Appsync 实施到 Angular 应用程序中
- javascript - 将字符串转换为数组并正确显示 ID?
- java - 添加 Thaumcraft 作为依赖项 - minecraft 1.12.2 改装
- objective-c - macOS:您是第一次打开应用程序“SubApp”。您确定要打开此应用程序吗?
- r - 美国地图图例中的离散值使用 plot_usmap
- python - 在 Python 列表中添加元素
- assembly - 程序应该找到数组中的最大数,第一次读取为无符号数,第二次读取为有符号数