Чтение из json и обратная запись, сохраняя исходное форматирование в Java. ⇐ JAVA
-
Anonymous
Чтение из json и обратная запись, сохраняя исходное форматирование в Java.
Я пытаюсь прочитать файл JSON и обновить определенное поле. Я могу добраться до нужного вложенного местоположения, но когда я сохраняю его после обновления, я получаю много символов «\r\n» вместо исходного форматирования. Я пробовал использовать два подхода к чтению:
Private LinkedHashMap get3rdJsonAsMap() { objectMapper = новый ObjectMapper();//.enable(SerializationFeature.INDENT_OUTPUT); LinkedHashMap json = null; пытаться { json = (LinkedHashMap)objectMapper.readValue(новый файл(this.mono3rdJsonPath), Object.class); } catch (IOException e) { е.printStackTrace(); } вернуть JSON; } и с:
частный JsonNode get3rdJsonAsNode() { objectMapper = новый ObjectMapper();//.enable(SerializationFeature.INDENT_OUTPUT); JsonNode json = ноль; пытаться { json = objectMapper.readTree(новый файл(this.mono3rdJsonPath)); } catch (IOException e) { е.printStackTrace(); } вернуть JSON; } Я пишу вот так:
Private void writeProvisionAsObject(Object json) { ObjectWriter Writer = objectMapper.writerWithDefaultPrettyPrinter(); Строка обновленаJsonString; пытаться { обновленныйJsonString =writer.writeValueAsString(json); // Записываем обновленную строку JSON обратно в файл JSON objectMapper.writeValue(новый файл(this.filePath), обновленныйJsonString); } catch (IOException e) { е.printStackTrace(); } } Я также слышал о JsonTokenizer, но читал, что для сохранения исходного форматирования мне приходится добавлять каждую строку вручную, чего я стараюсь избегать.
Как мне добиться сохранения исходного форматирования?
Я пытаюсь прочитать файл JSON и обновить определенное поле. Я могу добраться до нужного вложенного местоположения, но когда я сохраняю его после обновления, я получаю много символов «\r\n» вместо исходного форматирования. Я пробовал использовать два подхода к чтению:
Private LinkedHashMap get3rdJsonAsMap() { objectMapper = новый ObjectMapper();//.enable(SerializationFeature.INDENT_OUTPUT); LinkedHashMap json = null; пытаться { json = (LinkedHashMap)objectMapper.readValue(новый файл(this.mono3rdJsonPath), Object.class); } catch (IOException e) { е.printStackTrace(); } вернуть JSON; } и с:
частный JsonNode get3rdJsonAsNode() { objectMapper = новый ObjectMapper();//.enable(SerializationFeature.INDENT_OUTPUT); JsonNode json = ноль; пытаться { json = objectMapper.readTree(новый файл(this.mono3rdJsonPath)); } catch (IOException e) { е.printStackTrace(); } вернуть JSON; } Я пишу вот так:
Private void writeProvisionAsObject(Object json) { ObjectWriter Writer = objectMapper.writerWithDefaultPrettyPrinter(); Строка обновленаJsonString; пытаться { обновленныйJsonString =writer.writeValueAsString(json); // Записываем обновленную строку JSON обратно в файл JSON objectMapper.writeValue(новый файл(this.filePath), обновленныйJsonString); } catch (IOException e) { е.printStackTrace(); } } Я также слышал о JsonTokenizer, но читал, что для сохранения исходного форматирования мне приходится добавлять каждую строку вручную, чего я стараюсь избегать.
Как мне добиться сохранения исходного форматирования?
Мобильная версия