Jackson objectMapper.readValue (File) изменяет исходный файл во время чтения - PullRequest
1 голос
/ 06 апреля 2020

Похоже, что метод readValue() изменяет файл после чтения. Это происходит с Джексоном версии 2.9.8 и версии 2.9.10.3

Это метод, который я вызываю для сериализации объекта в файл, и он отлично сериализуется.

public void saveToFile() throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.writerFor(Type.class).withDefaultPrettyPrinter().writeValue(new File("C:\\Path\\To\\File.json"), object);
    }

При десериализации я использую этот вызов:

public Type restoreFromFile() throws IOException { 
       ObjectMapper objectMapper = new ObjectMapper();        
       Type restoredObj = objectMapper.readValue(new File("C:\\Path\\To\\File.json"), Type.class);
    }

Когда отладчик переходит к следующей инструкции (просто для l oop, которая никак не касается файла, но перебирает restoredObj) my File.json изменяется, как если бы другой Obj класса Type был сериализован без следования тем же тегам, которые использует обычная сериализация (он помещает некоторые значения в null и не сериализуется с использованием @JsonIdentityInfo).

Обратите внимание, что Obj корректно десериализуется при первом вызове метода restore(), но если я вызываю его дважды подряд, Obj десериализуется со значениями null вместо правильных.

...