2011-11-15 14 views
12

मैं उस तरह एक मॉडल है। हालांकि मैं अपने डेटा वैरिएबल को deserialize नहीं करना चाहता।जैक्सन deserialize चर के रूप में JSON स्ट्रिंग

{"cat": "1.2.3.4", "ner": "80", "name": "pinta" } 

कि मैं इसे deserialize अपने आप को आपत्ति उठाने के बाद: मैं इसे की तरह के रूप में एक json स्ट्रिंग होना चाहता हूँ। मैं उसे कैसे कर सकता हूँ?

पुनश्च: प्रश्न को स्पष्ट करने के लिए:

मैं उस तरह एक JSON स्ट्रिंग:

{ "डेटा": { "बिल्ली": "1.2.3.4", "नेर": "80 "," नाम ":" पिंटा "}," message ":" मीटर "," errorCode ": 12}

अक्रमांकन के बाद मेरी चर होना चाहिए कि मान:

message => "m" 
errorCode => 12 
data => "{"cat": "1.2.3.4", "ner": "80", "name": "pinta" }" 
+0

क्या आप इसे और स्पष्ट कर सकते हैं? – MByD

+0

@MByD जब मैं deserialization के बाद अपने चर को डीबग करता हूं, तो मैं देखना चाहता हूं कि मेरे डेटा वैरिएबल में वह मान है: '{" cat ":" 1.2.3.4 "," ner ":" 80 "," name ":" pinta "} 'क्योंकि मैं इसे इस तरह भेजता हूं: '" डेटा ": {" बिल्ली ":" 1.2.3.4 "," ner ":" 80 "," name ":" pinta "}' – kamaci

+0

@MByD मैंने अपना प्रश्न संपादित किया। – kamaci

उत्तर

7

Jackson issue 596 था मूल प्रश्न में वर्णित वांछित कार्यक्षमता के लिए बनाया गया है। यदि आप इसे लागू करना चाहते हैं तो इसके लिए वोट दें।

वर्तमान समाधान उपलब्ध कस्टम deserialization प्रसंस्करण को लागू करने के लिए है।

इसके अलावा, How can I include raw JSON in an object using Jackson? धागा इस विषय को कवर करता है।

7

मैं सुझाव दूंगा कि आप डेटा को मध्यवर्ती वस्तु से बाध्य होने दें; आमतौर पर यह या तो java.util.Map या org.codehaus.jackson.JsonNode (JSON ट्री) है। और फिर आप किसी भी तरह से डेटा तक पहुंच सकते हैं; ObjectMapper.convertValue(inputPojo, outputType) का उपयोग कर पीओजेओ में आसानी से कनवर्ट करना)।

+0

आपके उत्तर और वोटिंग के लिए धन्यवाद। बस इसे स्पष्ट करना चाहते हैं: मैं उस 'myObject = mapper.readValue (डेटा, क्लोज़) का उपयोग करता हूं; 'ट्रांसफरऑब्जेक्ट = mapper.convertValue (डेटा, क्लोज़) के बीच क्या अंतर है;'? – kamaci

+0

readValue() दिए गए स्रोत से पार्स सामग्री, जबकि कनवर्ट करें वैल्यू() लेखन मूल्य के बराबर है, इसे वापस दिए गए प्रकार के रूप में पढ़ना - यह जेएसओएन से बंधे जा सकने वाले किसी भी चीज़ में जेएसओएन के रूप में क्रमबद्ध किया जा सकता है। – StaxMan

+0

+1 इस समस्या के लिए सबसे अच्छा जवाब। जेसननोड के रूप में टाइप को रखने से यह केवल स्ट्रिंग() को कॉल करने और स्ट्रिंग जेसन मान प्राप्त करने में सक्षम बनाता है। बेशक यह पहले deserialized हो जाता है, और फिर फिर से serialized, जो थोड़ा अपर्याप्त है, लेकिन अब तक, यह अच्छा और साफ करने का एकमात्र तरीका है – Rasive

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