从JSON模式自动生成JavaScript

从JSON模式自动生成JavaScript,javascript,json,node.js,jsonschema,Javascript,Json,Node.js,Jsonschema,经过一个小时的搜索,我还没有找到解决问题的办法,现在我希望有人能在这里帮助我 因此,基本上我要寻找的是一种使用NodeJS从JSON(模式)文件自动生成JavaScript文件(*.js)的方法。我知道有类似fs.write的东西,但我认为这肯定不适合解决我的问题。到目前为止,我还没有找到其他方法来创建JavaScript文件 基本上我想翻译: { "type":"object", "properties": { "name": { "type": "string"

经过一个小时的搜索,我还没有找到解决问题的办法,现在我希望有人能在这里帮助我

因此,基本上我要寻找的是一种使用NodeJS从JSON(模式)文件自动生成JavaScript文件(*.js)的方法。我知道有类似fs.write的东西,但我认为这肯定不适合解决我的问题。到目前为止,我还没有找到其他方法来创建JavaScript文件

基本上我想翻译:

{
"type":"object",
"properties": {
    "name": {
        "type": "string"
    },
    "age": {
        "type": "integer",
        "default":12
    },
    "favorite_color": {
        "type": "string"
    },
    "gender": {
        "type": "string",
        "enum": [
            "male",
            "female"
        ]
    }
}
}
转换为JavaScript代码,如:

var data = function() { 

    data.baseConstructor.call(this);
    this.name = ko.observable("");
    this.age = ko.obseravble(12);
    this.favorite_color = ko.observable();
    this.gender = ko.observable(data.genderModes.male);

}

data.genderModes = {

   male: "male",
   female: "female" 
}

有人能给我一个问题的提示吗?

我不知道如何将json转换为js函数,但如果您想从json模式创建对象,可以使用。 在使用json模式默认值创建一个对象之后,您可以使用创建另一个对象,并且可以将第一级属性添加到由object.create函数创建的新对象中

var a = require('json-schema-defaults')({
"type":"object",
"properties": {
    "name": {
        "type": "string"
    },
    "age": {
        "type": "integer",
        "default":12
    },
  }
});

var b = Object.create(a,{
                         id:{ value:1 }, 
                          f:{ value:function() { 
                                     console.log('run lola run');
                                    }
                            }
                         }
                       );

name
favorite\u color
具有相同的配置,但生成的颜色不同这对我的问题/问题没有帮助。这是一个观察结果,您可以澄清生成规则。顺便说一句,到目前为止,你做了什么不符合你的问题?好吧,现在我要动态生成字符串来反映我的.js文件的内容,我认为这是真正做到这一点的唯一方法,有时这只是大量的键入。在编辑器中找到一个好的Find-and-replace选项会有很大帮助(整理代码并运行测试以确保不会遗漏任何内容)。你希望用这个来实现什么?所有的.js文件都将做什么?如果我们知道你想做什么,可能会有不同的方法来尝试(提供一些更大的背景)。