2014-05-10 76 views
1

我正在尋找一個用於爲JSON數據生成JSON模式的免費JS庫/工具。 因此,最後我有一個函數接受兩個參數jsonData和defaultRequired。在javascript中爲JSON生成模式

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庫相同。

+0

只是爲了檢查你可以調用函數? – cloudfeet

+0

是的,我只想生成模式,...而不是驗證它們 – codeofnode

回答

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));