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

Feine Ausgabe ist {test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}Gson Ausgabe mit String

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

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

nicht fein Ausgang ist Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"

Ist Gson verrückt zu werden oder ist es etwas, was ich falsch mache? Was passiert mit Zurück Schrägstriche und woher kommt diese u003d? Ich wusste, dass es vor langer Zeit einen Fehler dieser Art gibt, aber es wurde gelöst. Wie kann ich dieses Problem beheben? Vielen Dank im Voraus.

+0

seine Codierung wieder: '=' auf '\ u003dm' und' \ 'zu \\\ ' – codeMan

+0

Wie kann ich das spätere Problem lösen? Irgendwelche Vorschläge? –

Antwort

43

Das = Zeichen ist codiert zu \u003d. Daher müssen Sie disableHtmlEscaping() verwenden.

können Sie verwenden

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

Für \/ in \\/ Frage drehen, ist die Lösung

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

was ist \ n ?? Weil \ n auch manchmal in der Schnur hinzugefügt. –