Bisakah Anda menghindari Gson mengubah "<" dan ">" menjadi urutan unicode escape?

127

Saya perhatikan bahwa Gson mengubah string "<" menjadi urutan pelepasan unicode pada output JSON. Bisakah Anda menghindari ini entah bagaimana, atau apakah karakter seperti "<" dan ">" selalu harus melarikan diri di JSON?

Perhatikan contoh ini yang mencetak {"s":"\u003c"}; Saya hanya ingin {"s":"<"}.

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

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

Konteks: bagian dari JSON yang saya buat tidak ada hubungannya dengan halaman HTML atau bahkan JavaScript; itu hanya digunakan untuk meneruskan informasi terstruktur tertentu ke perangkat lunak lain (tertanam dalam perangkat, ditulis dalam C).

Jonik
sumber
2
Apakah GSON default untuk melakukan itu? Wah Itu adalah pengaturan standar yang agak aneh, meskipun hal yang sah untuk dilakukan dari perspektif spesifikasi JSON.
StaxMan
3
Ya, itu mengejutkan saya juga. Untungnya obatnya mudah setelah Anda tahu ke mana harus mencari. :) Kalau tidak, setelah pengalaman satu hari dengan itu, saya menemukan Gson perpustakaan yang sangat bersih, bagus, dengan panduan pengguna yang hebat juga!
Jonik
6
Ini juga terjadi pada karakter "=", yang berubah menjadi "\ u003d".
Russell Silva

Jawaban:

253

Anda harus menonaktifkan pelarian HTML .

Gson gson = new GsonBuilder().disableHtmlEscaping().create();
BalusC
sumber
11
Saya ingin tahu mengapa ini aktif secara default. JSON tidak ada hubungannya dengan HTML. The spek negara hanya "dan `\` perlu melarikan diri.
Mark Jeronimus
Kawan, itu tidak berhasil untuk saya. saya menggunakan '' com.squareup.retrofit2: retrofit: 2.3.0 '' && '' com.squareup.retrofit2: converter-gson: 2.3.0 ''. Tolong bantu aku.
Tn Kode