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

dzieła Wyjście jest {test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}GSON problem z ciągiem

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

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

Nie dzieł Wyjście jest Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"

Czy GSON oszaleję czy jest to coś, co robię źle? Co się dzieje z Back Slashes i skąd się ten u003d pojawia się? Wiedziałem, że istnieje dawno temu błąd, ale został rozwiązany. Jak mogę rozwiązać ten problem? Z góry dzięki.

+0

jego kodowanie znowu: '=' na '\ u003dm' i' \ '\\\ do ' – codeMan

+0

Jak mogę rozwiązać ten problem? Jakieś sugestie? –

Odpowiedz

43

Znak = jest kodowany do \u003d.. Dlatego należy użyć disableHtmlEscaping().

Można użyć

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

Dla \/ przekształcając \\/ problemu, rozwiązanie jest

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

co z \ n? Ponieważ \ n także dodawało czasami ciąg znaków. –