【问题标题】:Angular/Typescript - How to read in JSON as objectAngular/Typescript - 如何读取 JSON 作为对象
【发布时间】:2020-04-22 16:20:30
【问题描述】:

我正在尝试将以下 JSON 数据从 Observable 转换为打字稿对象,但它没有将嵌入的 JSON 转换为对象模型中的数组。我如何将这个多维 JSON 数据转换为对象?

JSON

[
    {
        "name": "Fake Name",
        "data1": {
            "entry1": false,
            "entry2": true,
            "entry3": "xyz"
        },
        "data2": {
            "entry1": false,
            "entry2": true,
        },
        "data3": {
            "entry1": false,
            "entry2": true,
            "entry3": "xyz"
        },
        "info1": false,
        "info2": "xyz"
    },{...}
]

对象

export class NewObject {
  public name: string;

  public data1: object[];

  public data2: object[];

  public data3: object[];

  public info1: string;
  public info2: string;

  constructor(name: string, data1: [], data2: [], data3: [],
              info1: string, info2: string
  ) {
    this.name = name;
    this.data1 = data1;
    this.data2 = data2;
    this.data3 = data3;
    this.info1 = info1;
    this.info2 = info2;
  }
}

【问题讨论】:

    标签: javascript json angular typescript primeng


    【解决方案1】:

    首先你的例子中的 JSON 字符串在 data2.entry2 上是错误的,最后的逗号太多了。

    您可以使用 JSON.parse() 将 JSON 字符串转换为 JavaScript 对象。但请注意,这不会调用 TypeScript 对象的构造函数,也不会检查对象的任何属性是否确实存在于 JSON 字符串中。

    export class NewObject {
    public name: string;
    
    public data1: object[];
    
    public data2: object[];
    
    public data3: object[];
    
    public info1: string;
    public info2: string;
    
    constructor(name: string, data1: [], data2: [], data3: [],
              info1: string, info2: string
    ) {
    this.name = name;
    this.data1 = data1;
    this.data2 = data2;
    this.data3 = data3;
    this.info1 = info1;
    this.info2 = info2;
    }
    }
    
    const jsonstring = `
    [
      {
        "name": "Fake Name",
        "data1": {
            "entry1": false,
            "entry2": true,
            "entry3": "xyz"
        },
        "data2": {
            "entry1": false,
            "entry2": true
        },
        "data3": {
            "entry1": false,
            "entry2": true,
            "entry3": "xyz"
        },
        "info1": false,
        "info2": "xyz"
      }
    ]
    `;
    
    let a: NewObject[];
    
    a = JSON.parse(jsonstring);
    

    这是我在这里对一个问题的第一个回答,所以我不知道如何正确格式化所有这些,但我希望我想说的是可以理解的:)

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 2016-11-25
      • 2019-11-07
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2018-11-06
      • 2017-03-18
      • 2021-01-01
      相关资源
      最近更新 更多