从JSON对象创建JavaScript类
我有一个JSON文件,其中包含信息数据,我使用AJAX获取这些数据,并使用此函数获取这些数据从JSON对象创建JavaScript类,javascript,Javascript,我有一个JSON文件,其中包含信息数据,我使用AJAX获取这些数据,并使用此函数获取这些数据 function fetchJSONFile(callback) { var httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = function() { if (httpRequest.readyState === 4) { if (httpRequest.st
function fetchJSONFile(callback) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var data = JSON.parse(httpRequest.responseText);
if (callback) callback(data);
}
}
};
httpRequest.open('GET', 'database.json');
httpRequest.send();
}
我获取它并将其分配给当前类的对象:
fetchJSONFile(function(data){
employes = Object.assign(new Employes(), ...data.Employes);
console.log(employes);
})
我的JSON文件中的数据如下:
{
"Employes":[
{
"id": 1,
"fullName": "Test Test"
}
],
"Infos":[
{
"id": 1,
"address": "Test Test test test test",
"employes": 1
}
]
}
我的问题是如何从JSON文件自动生成每种对象类型的类
例如,使用我的代码,我想在这里自动生成Employes
和Infos
类,而不必手动创建它们
fetchJSONFile(function(data){
employes = Object.assign(new Employes(), ...data.Employes); //Generate Classes automatically here from data type
console.log(employes);
})
有什么解决方案吗?JS本机没有与大多数OOP语言相同的类。您可能来自OOP背景,您应该了解JS 您将了解,实际上不必创建那些类。你可以通过简单的写作来实现(我认为)你想要的:
fetchJSONFile(function(data){
employes = data.Employes;
// or, if you wish to make a copy
//employes = data.Employes.map(e => {...e})
console.log(employes);
})
使
Employee
类接受响应中的对象作为构造函数参数,然后构建该对象。类似于let employee=new employee(data.employees[0])
@IsaacVidrine我想employees
是任意选择的,可以代表任何字符串?也许OP可以确认。您希望它们只具有与employee
对象相同的属性,还是实际上是一个employee对象?在标准OOP语言(不是javascript术语)中,您是否试图基于JSON数据生成一个新类(可能是因为您不知道这些类将被调用),或者您只是在尝试动态实例化各种预定义类的对象?这两种方法在Javascript中都相对容易——顺便说一句,Javascript没有类(除了语法糖),但算法会有很大的不同。@Cat我想基于JSON数据生成新的类,例如在我的代码中,我有关于JSON的Employes和infos,所以我想在我的js代码上自动创建Employes和infos类Employes
和infos
类可能定义了方法。正如OP所说,他们希望自动生成这些类,我假设没有。虽然我明白了,但我可能误解了这个问题。我认为,考虑到他们正在调用雇员
构造函数,它已经存在,他们只是不想显式引用它。但在重读了这个问题之后,我认为你是对的。我们应该从OP那里得到澄清。