2013-05-15 8 views
19
String s = "m\\"+"/m\\/m/m/m/m/m"; 

    LinkedHashMap<String, String> hm = new LinkedHashMap<>(); 

    hm.put("test", s); 

    System.out.println(hm+" Hash map = "+hm.toString()); 

ललित आउटपुट {test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}GSON मुद्दा

String s2 = new Gson().toJson(hm.toString()); 

    System.out.println("Json result is "+s2); 

नहीं ठीक आउटपुट Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"

GSON पागल हो रहा है है या यह कुछ है कि मैं गलत कर रहा हूँ है? के साथ क्या हो रहा है और u003d कहां से आता है? मुझे पता था कि इस प्रकृति की एक बग बहुत समय पहले मौजूद है लेकिन इसे हल किया गया था। मैं इस समस्या को कैसे हल कर सकता हूं? अग्रिम धन्यवाद।

+0

इसकी एन्कोडिंग फिर से है: '' '= \ u003dm' करने और' \ करने के लिए '\\\ ' – codeMan

+0

मैं बाद के मुद्दे को कैसे हल कर सकता हूं। कोई सुझाव? –

उत्तर

43

= संकेत \u003d. को एन्कोड किया गया है इसलिए आप disableHtmlEscaping() उपयोग करने के लिए की जरूरत है।

आप उपयोग कर सकते हैं

Gson gson = new GsonBuilder().disableHtmlEscaping().create(); 
String s2 = gson.toJson(hm.toString()); 

\/ लिए \\/ मुद्दे में तब्दील हो, समाधान

s2.replace("\\\\", "\\"); 
+0

के बारे में \ n ?? क्योंकि \ n स्ट्रिंग में कभी-कभी जोड़ा जाता है। –