Json преобразует & в String в\u0026

Я пытаюсь извлечь текст из pdf и записать его в json файл. При извлечении символов Юникода Json преобразует все и в \u0026. Например, моя фактическая строка &#1588. (который представляет ش). Он правильно печатает файл .txt, консоль и т.д. Но когда я пытаюсь напечатать эту строку в Json файле, она показывает \u0026#1588;.

Я использую Java, а код

Gson gson = new Gson();
String json = gson.toJson(pdfDoc);

Примечание. pdfDoc - это объект, содержащий все детали (положение, цвет, шрифт и т.д.) символов внутри входного документа PDF. Я использую gson-2.2.1.jar.

Ответы

Ответ 1

Это действительно действительная (но не обязательная) кодировка. Любой символ может быть закодирован с помощью escape-кода unicode в JSON, и любая действительная библиотека разбора JSON должна иметь возможность интерпретировать эти escape-последовательности.

& не является частью символов, которым требуется кодирование (см. определение string на json.org), но там это несколько JSON-библиотек, которые довольно "агрессивны" в своей кодировке. Это обычно не проблема, если вы не справляетесь с полученным JSON с соответствующим парсером JSON.

GsonBuilder.disableHtmlEscaping() поможет вам отключить эту функцию, если вам абсолютно необходимо.