Puoi evitare che Gson converta "<" e ">" in sequenze di escape unicode?


127

Ho notato che Gson converte la stringa "<" in una sequenza di escape unicode nell'output JSON. Puoi evitarlo in qualche modo o fare in modo che caratteri come "<" e ">" vengano sempre salvati in JSON?

Considera 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 pagine HTML o JavaScript; è solo usato per passare determinate informazioni strutturate a un altro software (incorporato in un dispositivo, scritto in C).


2
GSON non lo fa per impostazione predefinita? Whoa. Questa è un'impostazione predefinita piuttosto strana, sebbene cosa perfettamente legale da fare dal punto di vista delle specifiche JSON.
StaxMan,

3
Sì, è stato sorprendente anche per me. Fortunatamente il rimedio è facile una volta che sai dove cercare. :) Altrimenti, dopo un'esperienza di un giorno, trovo Gson una libreria davvero pulita e piacevole, con una grande guida per l'utente !
Jonik,

6
Questo succede anche al carattere "=", che si trasforma in "\ u003d".
Russell Silva,

Risposte:


253

Devi disabilitare l'escaping HTML .

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

11
Mi chiedo perché sia ​​attivo per impostazione predefinita. JSON non ha nulla a che fare con l'HTML. La specifica specifica solo "e `\` devono essere salvati.
Mark Jeronimus,

Ragazzi, non ha funzionato per me. sto usando '' com.squareup.retrofit2: retrofit: 2.3.0 '' && '' com.squareup.retrofit2: converter-gson: 2.3.0 ''. Mi aiuti per favore.
Mr Code
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.