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

Belle uscita è {test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}problema GSON con String

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

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

Non Belle uscita è Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"

È GSON impazzire o è qualcosa che sto facendo male? Che cosa sta succedendo con Posizioni iniziali e da dove viene visualizzato questo u003d? Sapevo che esiste un bug di questa natura molto tempo fa ma è stato risolto. Come posso risolvere questo problema? Grazie in anticipo.

+0

sua codifica: '=' a '\ u003dm' e' \ 'a \\\ ' – codeMan

+0

Come posso risolvere il problema successivo. Eventuali suggerimenti? –

risposta

43

Il segno = è codificato su \u003d. Quindi è necessario utilizzare disableHtmlEscaping().

È possibile utilizzare

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

Per \/ trasformando in \\/ problema, la soluzione è di nuovo

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

che dire \ n ?? Perché \ n viene aggiunto anche a volte nella stringa. –