Typescript автоматическое преобразование типов во время анализа JSON? - PullRequest
0 голосов
/ 04 февраля 2019

У меня следующий массив JSON, где ключом id является строка (да).

 "locations": [
    {
      "default_currency_id": "17",
      "continent": "1",
      "country_code": "AL",
      "gift_value": "150",
      "alert": "TEST",
      "caption": "Albania",
      "id": "1"
    },

Я бы хотел использовать автоматическое преобразование на основе значения, определенного в модели, вместо использования функции Number (смотрите пожалуйста прикрепленный фрагмент): Как это возможно в правильном направлении, пожалуйста?В идеале я хотел бы поместить json Array в типизированную модель без анализа вручную (как вы можете видеть в цикле for)

    export class Location {
      default_currency_id: number;
      continent: string;
      country_code: string;
      gift_value: string;
      alert: string;
      caption: string;
      id: number;
    }

parseDataset(data: any) {
    console.log('parseDataset');
    console.log(data);

    if(data.locations_gifts != null) {
      //this.dataSet.locations = data.locations_gifts;
      for(let o of data.locations_gifts){//HOW TO AVOID MANUAL PARSING?
        console.log(o);
        let item: Location = <Location>{
          default_currency_id: Number(o.default_currency_id), //HOW TO AVOID MANUAL CONVERSION?
        };
        this.dataSet.locations.push(item);
      }

    }
    console.log(this.dataSet)
  }

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я думаю, вы могли бы использовать опцию reviver из JSON.parse (). Я использую ее для приведения моей даты JSON (которая является строкой) в объекты даты Javascript, например: https://mariusschulz.com/blog/deserializing-json-strings-as-javascript-date-objects

0 голосов
/ 04 февраля 2019

Вы не можете этого сделать.TypeScript помогает проверить ваш код в процессе разработки, а не во время выполнения.Таким образом, преобразование данных динамического ответа не входит в сферу (по крайней мере, до этого момента)

...