javascript - 从 JSON 对象创建 JavaScript 类
问题描述
我有一个包含信息数据的 JSON 文件,我使用 AJAX 使用此函数获取这些数据。
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);
})
推荐阅读
- javascript - Puppeteer 始终未定义,但 devtools 适用于嵌套节点列表
- python - 如何将字节解码为第一个正斜杠?
- javascript - 包含数组的函数参数
- vue.js - 如何在 Vue 中获取当前路由的名称?
- java - Java - 父类中的字段不变
- python - 使用 python 测量 docker pull 的带宽
- java - 无法将 Json 反序列化为字符串数组
- postgresql - 在同一查询中显示或隐藏 PostgreSQL 中的列
- php - 将 $_POST 内容存储在多个类别 php 中
- curl - 如何将 curl 与用户名包含 @domain 的代理设置一起使用