Java Jackson序列化后System.out出现问题

Java Jackson序列化后System.out出现问题,java,json,jackson,system.out,Java,Json,Jackson,System.out,我一直在尝试将一些对象序列化到System.out(用于调试)。我一打电话 final JsonSerializer serializer = new JsonSerializer(); serializer.serialize( System.out, myObj ); System.out.println("done"); 它输出json,但是“完成”永远不会被打印出来。调试这些行时,清楚地显示第三行已执行,但输出从未显示 这是杰克逊的错误,还是我做错了什么 编辑: 由于其他用户的所有答案

我一直在尝试将一些对象序列化到System.out(用于调试)。我一打电话

final JsonSerializer serializer = new JsonSerializer();
serializer.serialize( System.out, myObj );
System.out.println("done");
它输出json,但是“完成”永远不会被打印出来。调试这些行时,清楚地显示第三行已执行,但输出从未显示

这是杰克逊的错误,还是我做错了什么

编辑:


由于其他用户的所有答案都被删除,我将回答我自己的问题。感谢用户指出这是一个jackson自动关闭输入流的问题

解决方案是将
JsonGenerator.Feature.AUTO\u CLOSE\u TARGET
添加到配置中,并将其设置为false:

mapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);

如果不想将映射器的jsongGenerator.Feature.AUTO_CLOSE_TARGET标志设置为false,可以用以下方式包装System.out以防止映射器关闭它

public <T> void println(T t) throws IOException {
    objectMapper.writeValue(new OutputStream() {
        @Override
        public void write(int i) throws IOException {
            System.out.write(i);
        }
    }, t);
    System.out.println();
}
public void println(T)抛出IOException{
objectMapper.writeValue(新的OutputStream(){
@凌驾
公共无效写入(int i)引发IOException{
系统输出写入(i);
}
},t);
System.out.println();
}

您应该接受自己的答案,因为它是正确的<代码>:)
public <T> void println(T t) throws IOException {
    objectMapper.writeValue(new OutputStream() {
        @Override
        public void write(int i) throws IOException {
            System.out.write(i);
        }
    }, t);
    System.out.println();
}