将动态 json 元素解析为同一字段

Parse dynamic json element to the same field

我尝试将 json 响应转换为人员列表。 该解决方案有效,但也许有更好的解决方案来解析它。 (我无法更改响应结构,但如果需要我可以更改人)

Json 响应:

{ "name1":{ "address": "abc", "city": "xy" }, "name2":{ "address": "abcdef", "city": "xyzzzz" } }

我的人:

class Person{
name:string;
city:string;
address:string;

constructor(name: string, city: string, address: string) {
    this.name = name;
    this.city = city;
    this.address = address;
}

}

我的示例实现:

const value = JSON.parse(data);
const arr:Person[] = [];
for (var key in value) {
    if (value.hasOwnProperty(key)) {
        arr.push(new Person(key, value[key].city, value[key].address));
    }
}

JSON.parse 是危险的,你必须使用 try catch

let value
try { 
  value = JSON.parse(data);
} catch (err) {
  value = {};
}

const arr:Person[] = Object.keys(value)
.map(key => new Person(key, value[key].city, value[key].address));