2010-11-10 1 views
81

Ho notato che Gson converte la stringa "<" in una sequenza di escape unicode nell'output JSON. Puoi evitarlo in qualche modo, o caratteri come "<" e ">" devono sempre essere sfuggiti in JSON?È possibile evitare la conversione di Gson "<" and ">" in sequenze di escape unicode?

Considerare questo esempio che stampa {"s":"\u003c"}; Vorrei semplicemente {"s":"<"}.

public static void main(String[] args) { 
    Gson gson = new GsonBuilder().create(); 
    System.out.println(gson.toJson(new Foo())); 
} 

static class Foo { 
    String s = "<"; 
} 

Contesto: il pezzo di JSON che sto creando non ha nulla a che fare con le pagine HTML o anche con JavaScript; è solo usato per passare determinate informazioni strutturate a un altro software (incorporato in un dispositivo, scritto in C).

+1

L'impostazione predefinita di GSON è? Whoa. Questa è un'impostazione predefinita piuttosto strana, anche se la cosa assolutamente legale da fare dalla prospettiva delle specifiche JSON. – StaxMan

+1

Sì, è stato sorprendente anche per me. Fortunatamente il [rimedio] (http://stackoverflow.com/questions/4147012/can-you-avoid-gson-converting-and-into-unicode-escape-sequences/4147245#4147245) è facile una volta che sai dove guardare . :) Altrimenti, dopo un giorno di esperienza con esso, trovo Gson una libreria veramente pulita e carina, con una grande [guida utente] (http://sites.google.com/site/gson/gson-user-guide) anch'essa ! – Jonik

+3

Ciò accade anche per il carattere "=", che diventa "\ u003d". –

risposta

163

È necessario disable HTML escaping.

Gson gson = new GsonBuilder().disableHtmlEscaping().create(); 
+1

Sì, era così. Grazie! – Jonik

+0

Prego. – BalusC

+0

si !! funzionante .. –