从JSON模式生成JavaScript类
我有一个JSON文件,其中包含关于我工作的信息和数据,如下所示:从JSON模式生成JavaScript类,javascript,json,Javascript,Json,我有一个JSON文件,其中包含关于我工作的信息和数据,如下所示: { "Employes":[ { "id": 1, "fullName": "Test Test" } ], "Infos":[ { "id": 1, "address": "Test Test test test test", "employes": 1
{
"Employes":[
{
"id": 1,
"fullName": "Test Test"
}
],
"Infos":[
{
"id": 1,
"address": "Test Test test test test",
"employes": 1
}
]
}
我想在JS代码上自动生成Employes
和Infos
类,并向其中添加一些方法
fetchJSONFile这是一个使用AJAX从JSON文件获取数据的函数:
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', 'datas.json');
httpRequest.send();
}
所以,在generate函数中,我想自动生成类并为其分配对象,我尝试这样做:
function generate(nameOfObject){
fetchJSONFile(function(data){
employes = Object.assign(new Employes(), ...data[nameOfObject]);
console.log(employes);
});
}
在这一行中,我将JSON对象分配给我的Employes()
类,我的问题是如何生成Employes()
自动分配JSON类型,因此如果是Infos
例如newEmployes()
变为newInfos()
。。。等等
我想这样做,向这些类添加一些函数,比如addNew()
,deleteOne()
。。。。等等,都是关于积垢的
有什么解决方案吗?如果返回的对象只有两个键,您可以
通过条目映射
,并创建如下两个数组变量:
如果您有两个以上的属性,则可以在内部映射中使用开关:
function Employee(){this.defaultEmployeeProp=“default”}
函数Infos(){this.defaultInfosProp=“default”}
const data={“雇员”:[{“id”:1,“全名”:“Test Test”}],“Infos”:[{“id”:1,“地址”:“Test Test”,“雇员”:1}]}
const[employees,infos]=Object.entries(data.map)([key,values])=>
values.map(e=>Object.assign(key===“Employes”?新员工():新信息(),e))
)
console.log(员工)
console.log(infos)
您可以创建一个DynamicClass
类,该类接受输入值和type
,该类可以是Employes,infos…
function DynamicClass (data, type) {
this.type = type;
// Init function
}
DynamicClass.prototype.xxxx = function () {}
现在可以使用数据对象创建类
fetchJSONFile(function(data){
for(var key in data) {
var classObj = new DynamicClass(data[key], key);
}
});
我想这可能已经在这里讨论过了,先生,这里的问题是,如果我在JSON文件中添加新类型,我需要手动创建类。我想自动生成类所有类型的类是否具有相同的原型
@sayou@varunagarwal,此时所有这些类都有相同的方法,(只是CRUD)@sayou如果所有项都有相同的行为,请创建一个泛型类,然后Object.assign(new-GenericClass(),e)
?@adiga您能给出一个如何使用它的示例吗?