在javascript中为JSON生成模式

时间:2014-05-10 06:48:54

标签: javascript json jsonschema

我正在寻找一个免费的JS lib /工具,用于为JSON数据生成JSON模式。 所以最后我有一个函数接受两个参数jsonData和defaultRequired。

jsonData (js object) => JSON data of which JSON schema to be found
defaultRequired (boolean) => boolean field if we need to make all the properties 'must required'

函数应该返回一个JS对象,它是jsonData的JSON模式。

我已经离开了http://www.jsonschema.net/ 由于该工具在线。我们必须手动插入数据并获取JSON模式。但我没有找到任何方法在我的应用程序中链接它并获得上述功能并在我自己的应用程序中工作相同。

我也经历了https://github.com/perenecabuto/json_schema_generator 但是这个是用python编写的,所以可能无法在我的应用程序中使用。

任何人都可以建议一个好的JS lib。

1 个答案:

答案 0 :(得分:0)

以下JS函数将JSON模式生成为对象。但它不会检查属性是否是强制性的。

function getSchema(id, obj) {

  if (Array.isArray(obj)) {
    var  retObj = getSchema(id, obj[0]);
    delete retObj.title;
    return {
      'title': id,
      'type': 'array',
      'items': retObj
    };
  } else if (typeof obj === 'object') {
    var retObj = {
      'title': id,
      'type': 'object'
    };
    retObj.properties = {};
    for (var prop in obj) {
      if (obj.hasOwnProperty(prop)) {
        retObj.properties[prop] = getSchema(prop, obj[prop]);
        delete retObj.properties[prop].title;
      }
    }

    return retObj;
  } else {
    return {
      'title': id,
      'type': typeof obj
    };
  }
}

您可以按如下方式调用该功能

k = {
  a: 1,
  b: '2',
  c: [3]
}


console.log(getSchema('Sample Object', k));