将动态 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));
我尝试将 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));