Генерация класса Javascript с конструктором, геттером и сеттером из Json Schema

Может ли кто-нибудь предложить, как мы можем создать класс 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 без каких-либо инструментов.

Я пробовал пару apis, таких как: json-schema-defaults, клиент swagger codegen и т. д., но мне не удалось его сгенерировать/достичь.

Обратите внимание: спрашивать об инструментах, библиотеках или других сторонних инструментах здесь не по теме.

ventiseis 10.04.2019 21:13

не могли бы вы предоставить некоторые предложения.

Nitesh Dubey 11.04.2019 05:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
423
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 и генерировать текстовый файл.

Ответ принят как подходящий

Да, мы можем сгенерировать модель из JSON/схемы с помощью следующего API:

json2model!

Вышеупомянутый API генерирует его на C#, но мы можем настроить шаблон в соответствии с вашими требованиями.

Он использует механизм шаблонов Python Jinja.

движок шаблонов jinja-python!

Другие вопросы по теме