我想在JS中定义一个空数据类,然后用JSON填充它。 在c#中我做了类似的事情:
class Person {
string name;
int age;
Person[] children;
var whatever;
}
这不起作用,IDE不喜欢它:"意外的令牌。期望构造函数,方法,访问者或属性"。
我已经尝试了
class Person {
var name;
var age;
var children;
var whatever;
}
但我没有使用JS的经验,而且我看到所有声明的变量都是立即定义的。
我不理解错误,因为我认为这些是属性,并且我不知道JSON反序列化器关于对象数组的行为,知道所述对象可能缺少JSON中的属性但我和#39;仍然希望它们在从字符串创建的JS对象中声明(但不设置)。
我怎样才能让事情奏效?
答案 0 :(得分:3)
您需要将其设为object
而不是类,然后在收到JSON时填写属性。
你应该使用类似的东西:
var Person = {
name: '',
age: '',
children: '',
whatever: ''
}
然后,您可以使用Person
等访问Person.name
对象的属性。
反序列化就像
一样简单Person = FunctionThatGivesYouAPersonObjectInJSON();
答案 1 :(得分:0)
JSON是用于Java Script对象的符号,因此您无需将这些变量存储在类中。只需将其存储在普通对象中即可。例如,如果要从ajax请求中恢复JSON对象,则可以将其存储为普通变量。
所以只需使用该对象。
答案 2 :(得分:0)
你用这种方式定义一个类。
class Person{
constructor(name, age, children, whatever) {
this._name = name;
this._age = age;
this._children = children;
this._whatever = whatever;
}
}
要实例化,请执行此操作。
var chris = new Person('Chris', 25, 2, 1)
答案 3 :(得分:0)
在ECMAScript6中,您可以使用JavaScript实现类:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes
因此您必须将代码更改为:
class Person{
constructor(age, name) {
this.age = age;
this.name = name;
}
}
此外,问题可能出在您的IDE设置中。通常在IDE中,您可以选择要使用的语言版本。例如,在WebStorm中,您可以在“设置”中选择: