JSON.stringify(this.workout)
不能对整个对象进行字符串化。 workout
是Workout
类的对象,如下所示:
export class Workout {
id: string;
name: string;
exercises: Exercise[];
routine: Routine;
}
练习和例程是另一个具有嵌套数组的类。
问题是JSON.stringify(this.workout)
仅返回{"name":"Day 1"}
。有什么想法可以解决问题吗?
答案 0 :(得分:1)
对于要序列化的任何类,可能必须定义to toJSON()
方法以确保数据被序列化。否则,只有常规的可枚举属性将最终出现在输出中。
您可能需要在Exercise
和Routine
以及Workout
上使用它。
另请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
答案 1 :(得分:1)
在本示例中使用纯JS可以看到,它可以按预期工作,因此您应该查看代码并确保正确初始化了所有对象。
或者,您也可以在任何这些类中实现自定义toJSON
方法,以定义序列化方式(请查看class
Routine
中的示例):
class Exercises {
constructor() {
this.items = [1, 2, 3];
}
}
class Routine {
constructor() {
this.property = 'DATA';
}
toJSON() {
return `ROUTINE = ${ this.property }`;
}
}
class Workout {
constructor() {
this.id = 1;
this.name = 'Foo';
this.exercises = new Exercises();
this.routine = new Routine();
}
}
const workout = new Workout();
console.log(JSON.stringify(workout, null, 4));
.as-console-wrapper {
max-height: none !important;
}