Чи можете ви уникнути перетворення Gson "<" і ">" в послідовність уникнення unicode?


127

Я помітив, що Gson перетворює рядок "<" у послідовність уникнення unicode у виході JSON. Ви можете якось уникнути цього, або в JSON завжди потрібно уникати таких персонажів, як "<" і ">"?

Розглянемо на цьому прикладі, які відбитки {"s":"\u003c"}; Я хотів би просто {"s":"<"}.

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

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

Контекст: фрагмент JSON, який я створюю, не має нічого спільного з HTML-сторінками або навіть JavaScript; він просто використовується для передачі певної структурованої інформації до іншого програмного забезпечення (вбудованого в пристрій, написаного на С).


2
Чи GSON замовчує це робити? Вау. Це досить дивне налаштування за замовчуванням, хоча цілком законний факт робити з точки зору специфіки JSON.
StaxMan

3
Так, мене це теж дивувало. На щастя, засіб легко, як тільки ви знаєте, де шукати. :) В іншому випадку після досвіду роботи з цим я вважаю Gson справді чистою, приємною бібліотекою, з чудовим посібником користувача !
Jonik

6
Це також відбувається з символом "=", який перетворюється на "\ u003d".
Рассел Сілва

Відповіді:


253

Потрібно вимкнути біг HTML .

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

11
Цікаво, чому це за замовчуванням. JSON не має нічого спільного з HTML. Тільки специфікація констатує, що "потрібно уникати.
Марк Єронімус

Хлопці, це не працювало для мене. я використовую '' com.squareup.retrofit2: retrofit: 2.3.0 '' && '' com.squareup.retrofit2: конвертер-gson: 2.3.0 ''. Будь ласка, допоможи мені.
Код містера
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.