gpt4 book ai didi

Java 程序在 ObjectMapper.writeValue(System.out, responseData) 之后终止 - Jackson Library

转载 作者:太空狗 更新时间:2023-10-29 22:56:11 28 4
gpt4 key购买 nike

我正在使用 Jackson 库创建 JSON 对象,但是当我使用 mapper.writeValue(System.out, responseData) 函数时,程序终止。这是我的代码:

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class Test {

public static void main(String[] args){
new Test().test();
}

public void test() {
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> responseData = new HashMap<String, Object>();

responseData.put("id", 1);

try {
mapper.writeValue(System.out, responseData);
System.out.println("done");
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}.

}

执行后,控制台显示{"id":1},但不显示"done"。

最佳答案

问题出在 Jackson 实现上,因为 ObjectMapper._configAndWriteValue 调用 UtfGenerator.close(),后者又调用 PrintStream.close()。

我会在 https://jira.codehaus.org/browse/JACKSON 记录一个问题

要更改目标被关闭的默认行为,您可以执行以下操作:

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

关于Java 程序在 ObjectMapper.writeValue(System.out, responseData) 之后终止 - Jackson Library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372549/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com