Angular/Typescript - 如何读入 JSON 作为对象

Angular/Typescript - How to read in JSON as object

我正在尝试将以下 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;
  }
}

首先你例子中的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);

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