2012-06-13 20 views
12

कोई सुझाव दे सकता है कि यह क्यों हो रहा है ...जीएसन स्ट्रिंग को प्रिंट करने के लिए जीएसओएन स्ट्रिंग

मुझे कुछ JSON सुंदर प्रिंट करने के लिए कुछ कोड मिला है। ऐसा करने के लिए, मैं Gson library से उपयोग कर रहा हूं।

हालांकि, जबकि आमतौर पर अच्छी तरह से काम करता है, कुछ पात्र ठीक से प्रदर्शित नहीं होते हैं। यहाँ है कि समस्या को दर्शाता है कोड का एक सरल टुकड़ा है:

//Creating the JSON object, and getting as String: 
JsonObject json = new JsonObject(); 
JsonObject inner = new JsonObject(); 
inner.addProperty("value", "xpath('hello')"); 
json.add("root", inner); 
System.out.println(json.toString()); 

//Trying to pretify JSON String: 
Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
JsonParser parser = new JsonParser(); 
JsonElement je = parser.parse(json.toString()); 
System.out.println(gson.toJson(je)); 

ऊपर कोड के उत्पादन में है:

{"root":{"value":"xpath('hello')"}} 
{ 
    "root": { 
    "value": "xpath(\u0027hello\u0027)" 
    } 
} 

कैसे मैं ऊपर ठीक कर सकता है?

उत्तर

26

इस कोड का प्रयोग करें, Gson वस्तु बनाने के लिए:

Gson gs = new GsonBuilder() 
    .setPrettyPrinting() 
    .disableHtmlEscaping() 
    .create(); 

disableHtmlEscaping() विधि gson बताता है जैसे <, >, &, =, और एक एकल उद्धरण जो आपको परेशानी का कारण बना एचटीएमएल पात्रों से बचने के लिए नहीं : '

नोट, यह आपको परेशानी का कारण बन सकता है, अगर आप अतिरिक्त <![CDATA[ ... ]]> टैग का उपयोग किए बिना HTML पृष्ठ में <script/> tag में ऐसे अनसुलझा JSON को प्रस्तुत करते हैं।

JsonWriter class के कोड को देखकर आप देख सकते हैं कि यह कैसे काम करता है, और अन्य वर्ण कैसे बचते हैं।

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