2015-02-16 2 views
3

После поиска по часовому поясу я не нашел решения по моей проблеме, и теперь я надеюсь, что кто-то сможет мне помочь здесь.Автоматический генерации JavaScript из JSON Schema

Так что в основном я ищу способ создания файла JavaScript (* .js) из файла JSON (Schema) автоматически с помощью NodeJS. Я знаю, что есть такие вещи, как fs.write, но это, безусловно, не подходит для моей проблемы, я думаю. И пока я не нашел другого способа создать мой файл JavaScript, кроме этого.

В основном я хочу перевести:

{ 
"type":"object", 
"properties": { 
    "name": { 
     "type": "string" 
    }, 
    "age": { 
     "type": "integer", 
     "default":12 
    }, 
    "favorite_color": { 
     "type": "string" 
    }, 
    "gender": { 
     "type": "string", 
     "enum": [ 
      "male", 
      "female" 
     ] 
    } 
} 
} 

Into 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" 
} 

ли кто-то сможет дать мне намек на мою проблему?

+0

'' name' и favorite_color' имеют такую ​​же конфигурацию, но генерируются по-разному – shyam

+0

Это не поможет мне с моей проблемой/вопросом –

+0

, что было наблюдение, так что вы можете уточнить правила для генерации. Кстати, что вы делали до сих пор, что не соответствовало вашей проблеме? – shyam

ответ

0

Я не знаю, как преобразовать json в js-функцию, но если вы хотите создать объект из json-схемы, вы можете использовать json-schema-defaults. После создания одного объекта с помощью json-schema-defaults вы можете создать чужие с Object.create, и вы можете добавить свойства первого уровня к новым объектам, которые создаются функцией 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'); 
            } 
          } 
         } 
         );