2015-04-06 8 views
7

से "प्रकार" का नाम बदलें मैं इस तरह से संघर्ष कर रहा हूं कि कैसे Moxy ऑब्जेक्ट्स की विरासत को प्रबंधित करता है।JSON moxy output

विशेष रूप से, मैं डिफ़ॉल्ट type तत्व है जो Moxy उपप्रकार के मामले में कहते हैं के रूप में यह मुझे मेरे वस्तुओं में अपने ही type क्षेत्र होने से रोकता है नाम बदलने की जरूरत है।

यह प्रश्न Remove "type" from JSON output jersey moxy से संबंधित है लेकिन दुर्भाग्यवश, यह मेरे प्रश्न का उत्तर नहीं देता है।

मैंने अपने सार वर्ग पर @XmlDiscriminatorNode शामिल करने का प्रयास किया है जो परिणामस्वरूप जेसन में कोई फर्क नहीं पड़ता।

मैंने डिफ़ॉल्ट मैक्सी type तत्व को पूरी तरह से लेकिन बिना किसी सफलता के निकालने का भी प्रयास किया है।

+0

जांच http://stackoverflow.com/questions/13831189/xmldiscriminatornode-xmldescriminatorvalue-not-working-on-weblogic-server/13838091#13838091 –

+0

ऐसा लगता है ब्लेज एक्सएमएल के लिए 'classifier' विशेषता के लिए इसका नाम बदलना करने में सक्षम है, तो मैं अपने ब्लॉग http://blog.bdoughan.com/2010/11/jaxb-and-inheritance-moxy-extension.html से अपने उदाहरण का उपयोग करके शुरू करने की कोशिश करूंगा। धन्यवाद! –

उत्तर

3

MOXy 2.6 में प्रकार की संपत्ति को संभालने में बदलाव आया है। MOXy 2.6 के रूप में, प्रकार का गुण डिफ़ॉल्ट रूप से xsi उपसर्ग (या जो भी उपसर्ग परिभाषित करता है) के साथ prefixed है। इसका मतलब है कि संस्करण 2.6 के साथ शुरू में MOXy में कोई प्रकार की संपत्ति टकराव नहीं होनी चाहिए।

विवरण https://wiki.eclipse.org/EclipseLink/DesignDocs/459464

नाम स्थान उपसर्ग में पाया जा सकता JAXBContext संपत्ति के रूप में निर्दिष्ट किया जाना चाहिए:

unmarshaller.setProperty (JAXBContextProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON); नक्शा नामस्थान = नया हैश मैप <>(); नेमस्पेस.पुट (javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "xsi"); unmarshaller.setProperty (JAXBContextProperties.NAMESPACE_PREFIX_MAPPER, नामस्थान);

+0

जोड़ा गया नामस्थान उपसर्ग मैपर के साथ, MOXy हर जगह नेमस्पेस रखना शुरू कर देता है, जो कुछ हमारे जावास्क्रिप्ट क्लाइंट स्वीकार नहीं करते हैं। मैं देखूंगा कि 'XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI' नेमस्पेस को छोड़कर नामस्थानों के उपयोग को समाप्त करने के बारे में मैं क्या कर सकता हूं ... –

+0

वैसे, क्या यह 'DesmlCustomizer' का उपयोग करके 'टाइप'' का नाम बदलकर' DescriptorCustomizer ' 'जहां कोई' क्लासडिस्क्रिप्टर .getInheritancePolicy() सेट कर सकता है। setClassIndicatorFieldName ("@ moxy-type") '? जब मैं ऐसा करने की कोशिश करता हूं, तो MOXy ठीक से अनारशनल JSON (मुझे एक बग की तरह लगता है) की क्षमता खो देता है। –

+0

अनावश्यक नामस्थानों को हटाने से समस्या को हल करना चाहिए। मुझे पता है कि कुछ मामलों में यह वास्तव में परेशान हो सकता है। –

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