2015-02-21 6 views
19

निकालें मैं निम्नलिखित json है:तेज़ एक्सएमएल जैक्सन: दोहरे उद्धरण चिह्नों

{"test":"example"} 

मैं तेज़ एक्सएमएल जैक्सन से निम्नलिखित कोड का उपयोग करें।

JsonParser jp = factory.createParser("{\"test\":\"example\"}"); 
json = mapper.readTree(jp); 
System.out.println(json.get("test").toString()); 

यह आउटपुट:

"example" 

वहाँ जैक्सन में एक सेटिंग दोहरे उद्धरण चिह्नों को हटाने के लिए है?

उत्तर

34

ठीक है, जब आप .get("test")JsonNode पर प्राप्त करते हैं और यह TextNode होता है; जब आप .toString() करते हैं, तो यह TextNode की स्ट्रिंग प्रस्तुति वापस कर देगा, यही कारण है कि आप वह परिणाम प्राप्त करते हैं।

.get("test").textValue(); 

जो (सब कुछ नहीं छोड़ा जाएगा और इतने पर के साथ) JSON स्ट्रिंग ही की वास्तविक सामग्री वापस आ जाएगी:

क्या आप चाहते हैं के लिए है।

ध्यान दें कि JsonNodeTextNode नहीं है तो यह शून्य हो जाएगा।

+1

और अधिक आम तौर पर, 'JsonNode.toString()' डिबगिंग या समस्या-निवारण के अलावा और कुछ के लिए इस्तेमाल नहीं किया जाना चाहिए: यह (उदाहरण के लिए) क्रमबद्धता के लिए उपयुक्त नहीं है। बजाय। objectMapper.writeValueAsString (नोड) सही तरीका है, और मैपर कॉन्फ़िगरेशन, संभावित इंडेंटेशन का उपयोग करके सभी भागने/उद्धरण पहलुओं को संभालता है। – StaxMan

4

गैर-उद्धृत पाठ का उपयोग करने के लिए सरल जेनेरिक टर्नरी, अन्यथा नोड को बरकरार रखें।

node.isTextual() ? node.asText() : node 
+0

यह काम किया। यदि आप नोड को गैर-उद्धृत पाठ वाले स्ट्रिंग के रूप में मुद्रित करना चाहते हैं, तो टर्नरी के बाद वाले भाग को 'objectMapper.writeValueAsString (नोड)' का उपयोग करके स्ट्रिंग में मैप किया जा सकता है। – skidev20

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