2014-10-05 6 views
20

मैं एक POJO वर्गजावा वर्ग से JSON स्कीमा

public class Stock{ 
int id; 
String name; 
Date date; 
} 

गए हैं कोई भी टिप्पणी या विकास रूपरेखा/एपीआई कि नीचे

{"id": 
     {    
     "type" : "int" 
     }, 
"name":{ 
     "type" : "string" 
     } 
"date":{ 
     "type" : "Date" 
     } 
} 

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

{"id": 
     {    
     "type" : "int", 
     "Required" : "Yes", 
     "format" : "id must not be greater than 99999", 
     "description" : "id of the stock" 
     }, 
"name":{ 
     "type" : "string", 
     "Required" : "Yes", 
     "format" : "name must not be empty and must be 15-30 characters length", 
     "description" : "name of the stock" 
     } 
"date":{ 
     "type" : "Date", 
     "Required" : "Yes", 
     "format" : "must be in EST format", 
     "description" : "filing date of the stock" 
     } 
} 
+0

क्या आप यह देख रहे हैं? http://stackoverflow.com/questions/9593409/convert-pojo-to-json – Elric

+0

नहीं, जो pojo को json ऑब्जेक्ट में परिवर्तित करता है। मैं जेएसओएन स्कीमा को मेटा के रूप में उत्पन्न करने के लिए देख रहा हूं [अंतिम उपयोगकर्ताओं को डेटाटाइप जैसे पॉजो क्षेत्रों में मैप किए गए इनपुट फॉर्म फ़ील्ड के बारे में जानकारी, चाहे यह आवश्यक है या नहीं, आदि]। – user3587174

+0

यहां एक ऑनलाइन साइट है जो जेसन से जेसन स्कीमा का उत्पादन करेगी: http://www.jsonschema.net/ – DwB

उत्तर

4

एक उपकरण जैक्सन JSON स्कीमा मॉड्यूल है:

https://github.com/FasterXML/jackson-module-jsonSchema

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

+0

आपके द्वारा निर्दिष्ट मॉड्यूल काम नहीं करता है यदि आपके पास एनम प्रकार युक्त जटिल वस्तुएं हैं जिन्हें enums रहने की आवश्यकता है। एक बेहतर टूल (अभी भी जैक्सन, लेकिन जैक्सन-मैपर) के लिए नीचे मेरा उत्तर देखें। आपके लिंक के निर्देशों के परिणामस्वरूप एनम्स को स्कीमा – StormeHawke

+0

में सरल स्ट्रिंग के रूप में प्रस्तुत किया जा रहा है हां, मैंने एक बग रिपोर्ट देखी।मुझे उम्मीद है कि हम मॉड्यूल के लिए अधिक योगदानकर्ता प्राप्त करेंगे - यह बाहरी योगदान है, जिसका व्यापक रूप से उपयोग किया जाता है, लेकिन इस बिंदु पर कोई समर्पित मालिक नहीं है। – StaxMan

14

मुझे इसे स्वयं करने की आवश्यकता में भाग गया, लेकिन नवीनतम स्कीमा spec (v4 इस पोस्ट के रूप में) प्राप्त करने की आवश्यकता है। मेरा समाधान नीचे दिए गए लिंक पर पहला उत्तर है: Generate Json Schema from POJO with a twist

com.fasterxml.jackson.databind पैकेज की बजाय org.codehaus.jackson.map पैकेज से ऑब्जेक्ट का उपयोग करें। यदि आप this पृष्ठ पर निर्देशों का पालन कर रहे हैं तो आप इसे गलत कर रहे हैं। इसके बजाय जैक्सन-मैपर मॉड्यूल का उपयोग करें।

private static String getJsonSchema(Class clazz) throws IOException { 
    org.codehaus.jackson.map.ObjectMapper mapper = new ObjectMapper(); 
    //There are other configuration options you can set. This is the one I needed. 
    mapper.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true); 

    JsonSchema schema = mapper.generateJsonSchema(clazz); 

    return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema); 
} 
+0

एफडब्ल्यूआईडब्ल्यू इस काम को बाहरी मॉड्यूल के साथ बनाना बहुत अच्छा होगा, क्योंकि इन-निर्मित पीढ़ी तंत्र को बहिष्कृत किया जा रहा है (कम से कम यह योजना है)। और इसके विपरीत वहां काम करने के लिए कोई तकनीकी ब्लॉक नहीं है। लेकिन तब तक यह जानना अच्छा होता है कि वहां एक काम है। – StaxMan

+0

@StaxMan क्योंकि आप इसके बारे में कुछ जानते हैं, क्या आप इसे देख सकते हैं और मुझे बता सकते हैं कि क्या आपके पास कोई सुराग है? धन्यवाद! http://stackoverflow.com/questions/7161638/how-do-i-use-a-custom-serializer-with-jackson/22108535#22108535 – StormeHawke

+0

मैं देखूंगा कि मैं सहायता कर सकता हूं - यह रिपोर्ट करने के लिए धन्यवाद & काम करने के लिए माफी मांगना चाहिए जैसा कि उन्हें करना चाहिए। – StaxMan

1

उपयोग JJschema:

यहाँ भविष्य Googler के लिए कोड है। यह ड्राफ्ट 4 अनुपालन JSON स्कीमा जेनरेट कर सकता है। विवरण के लिए इस पोस्ट को http://wilddiary.com/generate-json-schema-from-java-class/ देखें।

हालांकि Jackson Json Schema module भी स्कीमा उत्पन्न कर सकता है लेकिन यह आज के रूप में केवल ड्राफ्ट 3 अनुरूप स्कीमा उत्पन्न कर सकता है।

+0

https://github.com/mbknor/mbknor-jackson-jsonSchema जैक्सन एनोटेशन के आधार पर ड्राफ्ट 4 स्कीमा उत्पन्न कर सकता है – mbknor

संबंधित मुद्दे