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);
这是我在这里对一个问题的第一个回答,所以我不知道如何正确地格式化所有这些,但我希望我想说的是可以理解的:)
我正在尝试将以下 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);
这是我在这里对一个问题的第一个回答,所以我不知道如何正确地格式化所有这些,但我希望我想说的是可以理解的:)