JSON解析期间的Typescript自动类型转换?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON解析期间的Typescript自动类型转换?相关的知识,希望对你有一定的参考价值。

我有以下JSON数组,其中id键是一个字符串(呵呵)。

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

我想使用基于模型中定义的值而不是使用Number函数的自动转换(请参阅附件摘录):请问如何以正确的方式进行?理想情况下,我想将json数组放入类型模型而无需手动解析(正如您在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)
  }
答案

你不能这样做。 TypeScript可帮助您在开发中验证代码,而不是在运行时中。因此,动态响应数据的数据转换不在其范围内(至少在此时刻)

另一答案

我想你可以使用JSON.parse()中的reviver选项我用它来将我的JSON日期(这是字符串)转换为javascript Date对象例如:https://mariusschulz.com/blog/deserializing-json-strings-as-javascript-date-objects

以上是关于JSON解析期间的Typescript自动类型转换?的主要内容,如果未能解决你的问题,请参考以下文章

从 Typescript 解析 JSON 恢复数据成员但不恢复类型:无法在结果上调用方法

Angular 5 / Typescript - 如何将复杂的 json 对象转换为类

为 GraphQL 输出解析自动生成的 typescript-mongodb 类型

将 json 解析为 typescript 中的接口并检查是不是正常

在JSON.NET数据解析期间忽略解析错误

JAVA中如何将一个json形式的字符串转为json对象?