#javascript #node.js
#javascript #node.js
Вопрос:
Может кто-нибудь подсказать, как мы можем сгенерировать класс Javascript, который содержит конструктор, геттеры и сеттеры из полей схемы JSON без каких-либо инструментов.
Пример: у меня есть приведенная ниже схема данных
"data": {
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"title": "Name"
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"title": "Description"
}
}
}
Я хочу сгенерировать нижеприведенную модель
'use strict';
let name;
let description;
var _testSample;
class SampleModel {
constructor() {
_testSample = {
data: {
'name': name,
'description': description
}
};
}
setName(name) {
_testSample.data.name = name;
}
setDescription(description) {
_testSample.data.description = description;
}
}
module.exports = SampleModel;
Не могли бы вы подсказать, есть ли какой-либо движок API / шаблонов, который может генерировать такие классы из схемы JSON?
Может кто-нибудь подсказать, как мы можем сгенерировать класс Javascript, который содержит конструктор, геттеры и сеттеры из полей схемы JSON без каких-либо инструментов.
Я попробовал несколько API, таких как: json-schema-defaults, swagger codegen client и т. Д., Но мне не удалось сгенерировать / достичь этого.
Комментарии:
1. Пожалуйста, обратите внимание: запрос инструментов или библиотек или других сторонних инструментов считается здесь не по теме.
2. не могли бы вы дать какое-нибудь предложение.
Ответ №1:
Да, мы можем сгенерировать модель из JSON / Schema с помощью приведенного ниже API:
Приведенный выше API генерирует его на C #, но мы можем настроить шаблон в соответствии с вашими требованиями.
Он использует механизм шаблонов Python Jinja.
Ответ №2:
Если вы используете nodejs, просто напишите скрипт, чтобы преобразовать его в нужную вам строку.
import * as jsonClasses from "./my-json-classes-file";
import * as fs from "fs";
// add each line one at a time
let lines = ["use-string"];
for (let propname in jsonClasses) {
lines.push(`let %{propname};`);
}
out.push("class MyClass");
... just keep doing this
// join the lines together
const rawFile = lines.join("n");
// write it to a file
fs.writeFileSync("MyFileName.js", rawFile);
Тогда, как правило, будет способ убедиться, что этот скрипт выполняется перед запуском / компиляцией / сборкой вашего проекта. Или, может быть, вам придется запускать его вручную.
Дело в том, что базовый узел очень способен принимать json и генерировать текстовый файл.