Довольно печати для JSON в JAVA отлично работает для консоли, но в браузере это не работает - PullRequest
1 голос
/ 16 октября 2019

У меня есть файл JSON, и я хочу извлечь его содержимое из вызова API в контроллере отдыха, созданном в Java Spring Boot. Я получаю содержимое файла .json в строку и использую метод ниже (один из них) для красивой печати. Если я выводю system.out.println (), он печатается довольно хорошо, но в браузере он отображается примерно и без отступов. У меня было больше подходов:

    String content = new String(Files.readAllBytes(resource.toPath()));

    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    JsonParser jp = new JsonParser();
    JsonElement je = jp.parse(content);
    String prettyJsonString = gson.toJson(je);
    System.out.println(prettyJsonString);

    return prettyJsonString;

Другой подход возвращает тот же уродливый вывод в браузере, но он также добавляет "/ r / n":

    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
    String prettyJsonString = mapper.writeValueAsString(content);

    return prettyJsonString;

Может кто-нибудь помочь мне получитькрасивый вывод в браузере?

1 Ответ

1 голос
/ 16 октября 2019

Строка форматирования для вывода на консоль и для вывода на HTML - это две ОЧЕНЬ разные задачи. Метод setPrettyPrinting() предназначен для консольной печати. HTML-браузер будет игнорировать символы "\ n" и не будет учитывать несколько пробелов, заменяя их одним пробелом и т. Д. Обычно форматирование вывода обычно выполняется на стороне клиента. Но я разобрался с этой проблемой и написал метод, который берет строку в формате консоли и преобразует ее в строку в формате HTML. Например, он заменяет все символы "\ n" на br HTML-теги. Это также делает некоторые другие вещи. У меня был некоторый успех с этим, но иногда возникали некоторые неожиданные проблемы. Вы можете использовать его. Этот метод доступен в библиотеке с открытым исходным кодом MgntUtils. Вот его JavaDoc . Сама библиотека доступна как артефакт Maven здесь и на Github (включая исходный код и JavaDoc) здесь . Статья о библиотеке здесь . Ваш код будет выглядеть так:

String htmlString = TextUtils.formatStringToPreserveIndentationForHtml(jsonPrettyString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...