Java Jackson objectMapper.readValue(文件)在读取时修改原始文件
似乎Java Jackson objectMapper.readValue(文件)在读取时修改原始文件,java,json,jackson,objectmapper,Java,Json,Jackson,Objectmapper,似乎readValue()方法在读取后会修改文件。杰克逊版本2.9.8和版本2.9.10.3都会出现这种情况 这是我调用的将对象序列化为文件的方法,它可以完美地序列化 public void saveToFile() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.writerFor(Type.class).withDefaultPrettyPrin
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);
}
当调试器传递到下一条指令(只是一个for循环,它不会以任何方式接触文件,而是在restoredObj
上迭代)时,我的文件.json
会发生变化,就像类类型
的另一个Obj
在不遵循正常序列化使用的相同标记的情况下被序列化一样(它将一些值置于null
,并且不使用@JsonIdentityInfo
进行序列化)
请注意,
Obj
在我第一次调用restore()时得到了正确的反序列化
方法,但如果我连续调用它两次,Obj
将使用null
值而不是正确的值进行反序列化。目前很难帮助您。请发布您的代码-带有for循环的方法-可能更容易帮助。目前很难帮助您。请发布您的代码-t他使用for循环输入的方法,这可能更容易得到帮助。