Разобрать элемент Dynami c json в том же поле - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь преобразовать ответ json в список лиц. Это решение работает, но, возможно, есть лучшее решение для его анализа. (Я не могу изменить структуру ответа, но могу изменить человека при необходимости)

Json Ответ:

{"name1": {"address": "ab c "," 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));
    }
}

1 Ответ

1 голос
/ 04 мая 2020

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));
...