मैं गैर जीडब्ल्यूटी-आरपीसी जावा आधारित वेब सेवा से आने वाले JSON डेटा को मैप करने के लिए ऑटोबीन का उपयोग कर रहा हूं। सब कुछ एक मैपिंग को छोड़कर अब तक काम कर रहा है।क्या एक जीडब्ल्यूटी ऑटोबीन को कम करने का कोई तरीका है?
सर्वर की तरफ, कक्षा में टाइप मैप की एक संपत्ति है जहां MyAbstractParentObject लगभग 15 अलग-अलग बाल वर्गों का मूल वर्ग है।
जब मैं क्लाइंट पर संबंधित ऑटोबीन इंटरफ़ेस पर मैप करता हूं तो मैं अपने बच्चे के प्रकार को डीकोड किए जाने के बाद MyAbstractParentObject को कम करने में सक्षम नहीं हूं। मैंने सभी जीडब्ल्यूटी डॉक्स और 'द गुगल' को देखा ताकि यह देखने के लिए कि ऑटोबीन में भी पॉलिमॉर्फिक समर्थन है लेकिन किसी भी तरह का जवाब नहीं मिल सका। इंटरसेप्टर और श्रेणियां इस संभाल में सक्षम नहीं लगती हैं, बस उन तरीकों से वे इंटरफ़ेस में मौजूद होना चाहते हैं जो गेटर्स/सेटर्स नहीं हैं।
मैं जेएसओएन डेटा में टाइप फील्ड का उपयोग करके बाल वर्ग का उदाहरण बनाने के लिए एक वर्कअराउंड करने का प्रयास कर रहा था लेकिन ऑटोबीन मुझे कच्चे JSON तक पहुंच नहीं देता है, भले ही डीबगर में मैं इसे देख सकूं 'डेटा' नामक एक संरक्षित क्षेत्र। यदि मैं मूल बीन को डीकोड करने का प्रयास करता हूं तो इसमें केवल MyAbstractParentObject में फ़ील्ड होंगे।
- बढ़ाएँ या अपने खुद के AutoBeanCodex कि ठीक से MyAbstractParentObject की बच्चों संभाल कर सकते हैं जब यह JSON डीकोड बनाएँ:
केवल विकल्पों मैं देख सकता हूँ करने के लिए कर रहे हैं।
- MyAbstractParentObject ऑटोबीन में कच्चे JSON तक पहुंचने का एक तरीका खोजें और फ्लाई पर बाल वर्ग बनाने और उसका उपयोग करने के लिए इसका उपयोग करें।
- GWTProJSONSerializer या piriti जैसे कुछ अन्य JSON-GWT Serialization ढांचे पर स्विच करें।
किसी भी मदद की सराहना की जाएगी।
मैं AutoBeans के साथ इसी तरह काम करने के लिए मिला है, लेकिन मैं एक AutoBean Splittable विभाजन = AutoBeanCodex.encode (AutoBeanUtils.getAutoBean (sourceBean)) से Splittable प्राप्त करने के लिए एक पूर्ण एनकोड करते हैं; – Jonathan
@ जोनाथन मैंने 'AutoBeanCodex.encode()' की कोशिश की; यह उथल-पुथल के लिए काम करता है, लेकिन डाउनकास्टिंग के लिए नहीं - एक शर्म की बात है क्योंकि यह करने का एक आसान तरीका होगा। :) 'एनकोड()' नए 'स्प्लिटेबल' उत्पन्न करने के लिए बीन के गुणों को पार करने के लिए विज़िटर पैटर्न का उपयोग करता है। अफसोस की बात है, स्रोत जेएसओएन में ऐसे गुण हैं जो उस बीन के माध्यम से सुलभ नहीं हैं, लेकिन इसे 'डाउनकास्ट' करने के लिए जरूरी है ... और आगंतुक उन्हें नहीं देखता है, इसलिए JSON को 'एन्कोड() '' स्प्लिटेबल से उनके पास नहीं है। :( ... इसलिए अजीब तरह से 'स्प्लिटेबल' सीधे प्राप्त करना और इसे कॉपी करना; यह सही ढंग से डीकोड करता है क्योंकि सभी जानकारी अभी भी वहां है। –
मुझे लगता है कि आप क्या प्राप्त कर रहे हैं। अब मुझे लगता है कि दोनों तकनीकों में उनकी तकनीक है मामलों का प्रयोग करें। मैं ऊपर बताई गई विधि का उपयोग कर रहा हूं क्योंकि ज्यादातर समय जब मैं एक ऑटोबेन को दूसरे में बदल रहा हूं, तो मैंने ऐसा करने से पहले बदलाव किए हैं। इसलिए उस मामले में, मुझे पूर्ण विज़िटर ट्रैवर्सल क्रम में चाहिए सभी सही संशोधित जानकारी प्राप्त करने के लिए। 'हैस्प्लिटेबल' का उपयोग करने के बाद से फिसलन ढलान बढ़िया हो सकता है यदि आपने कोई बदलाव नहीं किया है, और आप ** जानते हैं ** कि कोई बदलाव नहीं किए गए हैं। अन्यथा, आप केवल पसंद हैं पूर्ण एन्कोड करने के लिए। जब तक मुझे कुछ याद नहीं आ रहा है ..... – Jonathan