2013-05-15 19 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()); 

İnce Çıktı {test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}GSON sorunu

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

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

Değil Güzel Çıktı

Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"GSON çıldırma mi yoksa ben yanlış yapıyorum bir şeydir nedir? Back Slashes ile neler oluyor ve buradan u003d görünüyor? Uzun zaman önce bu doğada bir böcek olduğunu biliyordum ama çözülüyordu. Bu sorunu nasıl çözebilirim? Şimdiden teşekkürler.

+0

onun kodlama yine: '=' \ u003dm' 've' \ 'etmek \\\ ' – codeMan

+0

Sonraki sorunu nasıl çözebilirim? Baska öneri? –

cevap

43

= işareti \u003d. olarak kodlanmıştır Bu nedenle disableHtmlEscaping() kullanmanız gerekir.

Sen \\/ konuya dönüşüyor \/ için

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

kullanabilirsiniz, çözüm

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

ne hakkında \ n? Çünkü \ n bazen dize de ekledi. –