JSON डेटा से JSON स्कीमा उत्पन्न करने के लिए उपकरण [बंद]


178

हमारे पास यह जेट स्कीमा ड्राफ्ट है । मैं अपने JSON डेटा का एक नमूना प्राप्त करना और JSON स्कीमा के लिए एक कंकाल उत्पन्न करना चाहूंगा, कि मैं मैन्युअल रूप से पुनः काम कर सकता हूं, विवरण, आवश्यक आदि जैसी चीजों को जोड़ सकता हूं, जो विशिष्ट उदाहरणों से अनुमान नहीं लगाया जा सकता है।

उदाहरण के लिए, मेरे इनपुट से example.json:

{
    "foo": "lorem", 
    "bar": "ipsum"
}

मैं अपना json_schema_generator टूल चलाऊंगा और प्राप्त करूंगा:

{ "foo": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  },
  "bar": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  }
}

इस उदाहरण को मैन्युअल रूप से कोडित किया गया है, इसलिए इसमें शायद त्रुटियां हैं। क्या कोई उपकरण है जो मुझे रूपांतरण JSON -> JSON स्कीमा के साथ मदद कर सकता है?


लेकिन उपकरण को कैसे पता चलेगा कि यह तार से तार तक एक सामान्य नक्शा नहीं है?
हमाखोल ने

1
प्रदान किए गए उदाहरण में, मैं कहूंगा कि यह स्पष्ट है कि हमारे पास एक शब्दकोश (अजगर शब्दावली) है, जिसमें कुंजी-मूल्य जोड़े हैं, जहां मूल्य तार होते हैं। मुझे किसी अन्य JSON स्कीमा के बारे में नहीं पता है जो समान डेटा का वर्णन करेगा। और यह सिर्फ एक आसान उदाहरण है: यह बहुत अधिक जटिल हो सकता है, ज़ाहिर है, जैसा कि JSON स्कीमा ड्राफ्ट में निर्दिष्ट है।
ब्लूफैस्ट

3
तो आप दावा कर रहे हैं कि "मनमाने तार से दूसरे मनमाने तार तक" (जैसे फ़ाइल नाम से मैपिंग से सामग्री के विवरण तक) को JSON स्कीमा के रूप में व्यक्त नहीं किया जा सकता है? सभी के लिए मुझे पता है, यह सच हो सकता है, लेकिन यह मेरे विचार में उस तरह के स्कीमाटा को बेकार बना देगा।
हमखोलम ने मोनिका से

1
मम्म, मुझे यकीन नहीं है कि हम सवाल के लिए प्रासंगिक कुछ पर चर्चा कर रहे हैं, लेकिन वैसे भी। आइए एक बेहतर उदाहरण का उपयोग करें: JSON डेटा में निश्चित कुंजियाँ होना निश्चित रूप से उपयोगी है यदि JSON डेटा है, उदाहरण के लिए, किसी व्यक्ति के गुणों का वर्णन करना। "फू" और "बार" के बजाय, "नाम", और "उपनाम" के बारे में सोचें। "नाम" और "उपनाम" स्पष्ट रूप से व्यक्ति JSON डेटा के निश्चित गुण हैं, इसलिए वे मनमाने तार नहीं हैं: वे व्यक्ति स्कीमा का हिस्सा हैं। मान निश्चित रूप से मनमाने हैं, इसलिए वे स्कीमा का हिस्सा नहीं हैं।
ब्लूफस्ट

3
निश्चित कुंजी होने पर कभी-कभी आप जो चाहते हैं, और कभी-कभी ऐसा नहीं होता है। यह वास्तव में संपूर्ण बिंदु है: कोई भी तरीका नहीं है जो एक स्वचालित उपकरण एकल नमूने से पता लगा सकता है कि आपको कौन से विकल्प चाहिए।
हमाखोल ने

जवाबों:


92

आप इसे देख सकते हैं:

http://www.jsonschema.net

यह एक ऑनलाइन टूल है जो JSON स्ट्रिंग से JSON स्कीमा को स्वचालित रूप से जेनरेट कर सकता है। और आप स्कीमा को आसानी से संपादित कर सकते हैं।


3
शुरू करने के लिए एक आसान और आसान जगह। लेकिन ध्यान दें कि इस पृष्ठ पर कहीं और पहचाने गए jsonschema.net के साथ समस्याओं की सूचना दी गई है, और कारणों को ऑफ़लाइन, या कम से कम एपीआई-सुलभ, विकास वर्कफ़्लोज़ में शामिल करने के लिए उपकरण, बाद के उदाहरण के साथ स्कीमाओं को अपडेट करने की अनुमति देने आदि के लिए भी देखें। स्टीव बेनेट द्वारा विकल्पों की सूची।
nealmcb

कृपया ध्यान दें कि प्रारंभिक आयात के बाद स्कीमा को संपादित करते समय यह साइट अप्रत्याशित त्रुटियां फेंक देगी।
कोरुस

1
किसी चीज़ के लिए क्रैश, {"hello": "world","num": 42}लेकिन आशाजनक लगता
DBX12

3
पुरानी साइटें निश्चित रूप से अच्छी नहीं थीं। JSONSchema.Net अब फिर से लिखा गया है। यह ज्यादा मजबूत है। यदि आपके पास कोई समस्या है, तो कृपया उन्हें GitHub पर रिपोर्ट करें और मैं ख़ुशी से उन्हें ठीक कर दूंगा: github.com/jackwootton/json-schema
जैक

jsonschema2pojo.org वह है जो मैं वर्षों से उपयोग कर रहा हूं
कोई व्यक्ति कहीं

83

अन्य जवाबों को सारांशित करते हुए, यहां JSON स्कीमा जनरेटर प्रस्तावित हैं:

ऑनलाइन:

अजगर:

NodeJS:

माणिक:


jskemetor - नहींsetup.py
Att Righ

कोई भी मौका अगर आप जानते हैं कि इनमें से कोई भी YAML इनपुट का समर्थन करता है? हम बदल सकते हैं, लेकिन सिर्फ एक अतिरिक्त कदम।
डायलनयुंग

28

जेनसन ( PyPI | Github ) एक JSON स्कीमा जनरेटर है जो कई वस्तुओं से एक एकल स्कीमा उत्पन्न कर सकता है। आप इसके साथ स्कीमा को भी मर्ज कर सकते हैं। यह पायथन में लिखा गया है और एक सीएलआई उपकरण के साथ आता है।

(पूर्ण प्रकटीकरण: मैं लेखक हूं।)


1
अच्छा काम है यार! इससे पहले कि मैं स्किनर पर काम करना शुरू करूं, मुझे यह पछतावा नहीं है: github.com/scrapinghub/skinfer
एलियास डोर्नेलेस

1
एक अजगर नहीं, लेकिन यहाँ एक और एक github.com/snowplow/schema-guru है
chuwy

1
महान! मैं ऑनलाइन स्कीमा जनरेटर jsonschema.net से निराश हो गया हूं (यह अधिकांश वस्तुओं के लिए "आवश्यक" गुण बनाने में विफल रहता है, कॉम्पैक्ट (एक-लाइन) गुण या ओट आईडी का उत्पादन करने के लिए कोई विकल्प नहीं है, और सबसे महत्वपूर्ण बात यह है कि एक स्कीमा उत्पन्न करता है एकल-स्कीमा सरणियों के लिए इसे बनाने के लिए उपयोग किए गए डेटा को मान्य करने में विफल रहता है)। अपने टूल को आज़माने के लिए तत्पर हैं।
डेव

@Dave - im भी json schema.net के साथ इसी तरह की समस्याओं का सामना कर रहा है, क्या इस अजगर उपकरण ने मदद की?
Cashh

1
@ चश: मैं जेनसन से बेहद प्रभावित हूं और इसमें एक योगदान दिया। लेखक की तुलना में मुझे अधिक प्रतिबंधात्मक स्कीमा उत्पन्न करने की आवश्यकता थी, इसलिए मैं आराम से था ताकि मैं पैटर्न गुणों और अतिरिक्तप्रायः / अतिरिक्तताओं को उत्पन्न करने के विकल्पों के साथ एक संस्करण निकालूं ताकि गैर-मान्यता प्राप्त JSON डेटा को ध्यान देने की आवश्यकता के रूप में चिह्नित किया जा सके।
डेव

22

यह देखते हुए कि यह प्रश्न काफी कुछ उलट हो रहा है, मैं नई जानकारी जोड़ता हूं (मुझे यकीन नहीं है कि यह नया है, लेकिन मैं इसे समय पर नहीं पा सका)


6

कई महीनों के बाद, मेरे पास सबसे अच्छा जवाब मेरा सरल उपकरण है। यह कच्चा है लेकिन कार्यात्मक है।

क्या मैं चाहता हूँ करने के लिए कुछ इसी तरह है इस । JSON डेटा JSON स्कीमा के लिए एक कंकाल प्रदान कर सकता है। मैंने इसे अभी तक लागू नहीं किया है, लेकिन एक मौजूदा JSON स्कीमा को आधार के रूप में देना संभव होना चाहिए, ताकि मौजूदा JSON स्कीमा प्लस JSON डेटा एक अद्यतन JSON स्कीमा उत्पन्न कर सके। यदि कोई स्कीमा इनपुट के रूप में नहीं दिया जाता है, तो पूरी तरह से डिफ़ॉल्ट मान लिया जाता है।

यह पुनरावृत्त विकास में बहुत उपयोगी होगा: पहली बार उपकरण चलाने पर, JSON स्कीमा डमी है, लेकिन इसे डेटा के विकास के अनुसार स्वचालित रूप से परिष्कृत किया जा सकता है।


2
कैसे @Green सु के सुझाव के रूप में उत्सुक अपनी आवश्यकताओं के लिए नहीं रहते थे। मुझे लगता है कि आप एक उपयोगिता का वर्णन कर रहे हैं जो जम्पस्टार्टर प्रदान करता है (आपका शब्द 'कंकाल' है) - एक स्कैफ़र कोड जनरेटर की तरह कुछ?
JustSteve

13
मूल रूप से, उस टूल के साथ समस्या यह है कि यह एक ऑनलाइन टूल है। मुझे इसे अपने विकास के माहौल में स्थानीय रूप से चलाने की आवश्यकता है, कभी-कभी स्वचालित रूप से अन्य कार्यों के हिस्से के रूप में। एक "यहां कॉपी करें, वहां पेस्ट करें" टूल मेरी मदद नहीं करता है। अगर इसमें REST API होता जो काफी अच्छा होता।
ब्लूफस्ट

2
@justSteve: ऑनलाइन टूल, कॉपी-पेस्ट वर्कफ़्लो का उपयोग करने के अलावा, अभी भी छोटी गाड़ी (मूल प्रश्न के 4 साल बाद) दिखाई देती है। मेरे पास json ऑब्जेक्ट्स हैं जिनके लिए टूल गलत स्कीमा बनाता है लेकिन बग रिपोर्ट के रूप में सबमिट करने के लिए उन्हें अभी तक न्यूनतम परीक्षण मामलों में कम नहीं किया है।
डेव

5

किसी दिए गए JSON के लिए JSON स्कीमा उत्पन्न करने के लिए एक अजगर उपकरण है: https://github.com/perenecabuto/json_schema_generator


4
यह 2013 के बाद से अस्वीकार्य है। यह पायथन 3 का समर्थन नहीं करता है। इसके अलावा, यह केवल एक पुराने मसौदे का समर्थन करता है, अर्थात draft-03
एक्यूमेनस

5

generate-schema( NPM | Github ) इसमें JSON ऑब्जेक्ट लेता है, जिससे स्कीमा उत्पन्न होता है, एक आउटपुट JSON स्कीमा है, यह Node.js में लिखा गया है और फाइलों को पाइप करने के लिए REPL और ClI टूल के साथ आता है।

पूर्ण प्रकटीकरण: मैं लेखक हूँ :)


4+ का मसौदा तैयार करने के लिए मॉड्यूल को अपडेट करने की कोई योजना? मिनट, अधिकतम attrs, संदर्भ और इतने पर जोड़ना? टूल btw के लिए धन्यवाद :) मेरे प्रोजेक्ट में इसका उपयोग करेंगे
श्री एलियन

5

एक नोडज उपकरण है जो https://github.com/krg7880/json-schema-generator पर json स्कीमा v4 का समर्थन करता है

यह कमांड लाइन टूल के रूप में, या नोडज पुस्तकालय के रूप में काम करता है:

var jsonSchemaGenerator = require('json-schema-generator'),
    obj = { some: { object: true } },
    schemaObj;

schemaObj = jsonSchemaGenerator(json);

1
एक CLI के साथ भी आता है!
पीटर Ilfrich

3

json-schema-जनरेटर एक साफ रूबी आधारित JSON स्कीमा जनरेटर है। यह JSON स्कीमा के प्रारूप 3 और 4 दोनों का समर्थन करता है। इसे एक स्टैंडअलोन निष्पादन योग्य के रूप में चलाया जा सकता है, या इसे रूबी स्क्रिप्ट के अंदर एम्बेड किया जा सकता है।

फिर आप JSON- स्कीमा का उपयोग अपने नए जेनरेट किए गए स्कीमा के खिलाफ JSON के नमूनों को मान्य करने के लिए कर सकते हैं।


3

ऑफ़लाइन टूल जो कई इनपुट का समर्थन करते हैं, मैंने अब तक सबसे अच्छा देखा है https://github.com/wolverdude/GenSON/ मैं एक उपकरण देखना चाहूंगा जो मानक इनपुट पर फ़ाइल नाम लेता है क्योंकि मेरे पास हजारों फाइलें हैं । हालाँकि, मैं खुले फ़ाइल डिस्क्रिप्टर से बाहर चला जाता हूं, इसलिए सुनिश्चित करें कि फाइलें बंद हैं । मैं JSON स्कीमा जनरेटर भी देखना चाहता हूं जो पुनरावृत्ति को संभालता है। अब मैं अपने जावा कक्षाओं से JSON स्कीमा में जाने की उम्मीद में JSON ऑब्जेक्ट्स से जावा कक्षाएं बनाने पर काम कर रहा हूं। यदि आप उत्सुक हैं या इसमें बग की पहचान करना चाहते हैं तो यहां मेरी जेनसन स्क्रिप्ट है।

#!/bin/sh
ulimit -n 4096
rm x3d*json
cat /dev/null > x3d.json
find ~/Downloads/www.web3d.org/x3d/content/examples -name '*json' -      print| xargs node goodJSON.js | xargs python bin/genson.py -i 2 -s     x3d.json >> x3d.json
split -p '^{' x3d.json x3d.json
python bin/genson.py -i 2 -s x3d.jsonaa -s x3d.jsonab /Users/johncarlson/Downloads/www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter02-GeometryPrimitives/Box.json > x3dmerge.json 

सबसे पहले, आप unix.stackexchange.com/questions/211803/… का जवाब दे सकते हैं ?
डेव

2

बहुत सारे उपकरण उल्लिखित हैं, लेकिन एक और रिकॉर्ड के लिए JSON स्कीमा का नाम दिया गया है:

https://github.com/rnd0101/json_schema_inferencer

(यह एक पुस्तकालय या उत्पाद नहीं है, बल्कि पायथन लिपि है)

सामान्य पूर्ण प्रकटीकरण के साथ: मैं लेखक हूं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.