Файл JSON напечатан с полосами, разделяющими поля

Мне нужно отправить минимизированный JSON в службу отдыха, это казалось нормальным, однако при печати моего JSON в файл появляются несколько косых черт "/", отделяющих поля от файла, поскольку я новичок в этом типе реализации, я был смущенный ...

По сути, я добавляю объекты в список и в конце конвертирую общий список в Json, это мой метод, который преобразует объект List в JSON.

public String convertListToJson(List obj) throws IOException {
    String jsonInString = null;
    ObjectMapper mapper = new ObjectMapper();
    mapper.setDefaultPropertyInclusion(JsonInclude.Include.ALWAYS);
    mapper.configure(SerializationFeature.USE_EQUALITY_FOR_OBJECT_ID, true);
    jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
    JsonNode jsonNode = mapper.readValue(jsonInString, JsonNode.class);
    String json = jsonNode.toString();
    return json;
}


String payload = convertListToJson(object);
        System.out.println(payload);

Это результат печати на консоли

 [{"id":12,"nomePeriodo":"2012","inicio":"2012-01-01T02:00:00Z","fim":"2012-12-31T02:00:00Z"},{"id":13,"nomePeriodo":"2013","inicio":"2013-01-01T02:00:00Z","fim":"2013-12-31T02:00:00Z"},{"id":14,"nomePeriodo":"2014","inicio":"2014-01-01T02:00:00Z","fim":"2014-12-31T02:00:00Z"},{"id":15,"nomePeriodo":"2015","inicio":"2015-01-01T02:00:00Z","fim":"2015-12-31T02:00:00Z"},{"id":16,"nomePeriodo":"2016","inicio":"2016-01-01T02:00:00Z","fim":"2016-12-31T02:00:00Z"},{"id":17,"nomePeriodo":"2017","inicio":"2017-01-01T02:00:00Z","fim":"2017-12-31T02:00:00Z"},{"id":18,"nomePeriodo":"2018","inicio":"2018-01-01T02:00:00Z","fim":"2018-12-31T02:00:00Z"}]

Это метод, который я использую для печати в файл.

 printJson(payload);
     private void printJson(String payload) {
            ObjectMapper mapper = new ObjectMapper();
            try {
                mapper.writeValue(new File("c:\\server\\JSON.json"), payload);

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

Когда я печатаю в файл, вот результат:

"[{\"id\":12,\"nomePeriodo\":\"2012\",\"inicio\":\"2012-01-01T02:00:00Z\",\"fim\":\"2012-12-31T02:00:00Z\"},{\"id\":13,\"nomePeriodo\":\"2013\",\"inicio\":\"2013-01-01T02:00:00Z\",\"fim\":\"2013-12-31T02:00:00Z\"},{\"id\":14,\"nomePeriodo\":\"2014\",\"inicio\":\"2014-01-01T02:00:00Z\",\"fim\":\"2014-12-31T02:00:00Z\"},{\"id\":15,\"nomePeriodo\":\"2015\",\"inicio\":\"2015-01-01T02:00:00Z\",\"fim\":\"2015-12-31T02:00:00Z\"},{\"id\":16,\"nomePeriodo\":\"2016\",\"inicio\":\"2016-01-01T02:00:00Z\",\"fim\":\"2016-12-31T02:00:00Z\"},{\"id\":17,\"nomePeriodo\":\"2017\",\"inicio\":\"2017-01-01T02:00:00Z\",\"fim\":\"2017-12-31T02:00:00Z\"},{\"id\":18,\"nomePeriodo\":\"2018\",\"inicio\":\"2018-01-01T02:00:00Z\",\"fim\":\"2018-12-31T02:00:00Z\"}]"

Итак, у вас есть эти \ бары, разделяющие элементы в json ... Я что-то делаю не так или это обычное дело? Если возможно, я бы хотел удалить их из своего архива

Почему вы снова используете ObjectMapper при записи в файл? Вы уже преобразовали свою полезную нагрузку в строку - разве вы не хотите просто записать эту строку прямо в файл?

Jon Skeet 17.12.2018 18:09

@JonSkeet Truth! Я делаю это снова! Спасибо

Manzini 17.12.2018 18:12

Эти полосы называются обратными косыми чертами и используются для выделения специальных символов, таких как двойные кавычки ("). Джон уже намекнул, почему, то есть вы позволяете ObjectMapper записывать строку в файл, и, таким образом, он будет обрабатывать всю строку как значение один Json и будет экранировать все двойные кавычки в строке на \" (в большинстве случаев требуется экранирование если текстовые значения содержат кавычки или двойные кавычки, например "fullName":"Thomas \"Tom\" Whoever").

Thomas 17.12.2018 18:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
42
0

Другие вопросы по теме