gson中的JsonReader是否需要显式关闭
Does JsonReader in gson need to be explicitly closed
我想在读取 json 文件时使用 gson 执行此操作:
JsonReader reader = new JsonReader(new InputStreamReader(
new FileInputStream(filename)));
JsonParser jsonParser = new JsonParser();
return jsonParser.parse(reader).getAsJsonObject();
我会在其他地方用返回的 JsonObject 做更多的事情。
我的问题是这是否可以,因为我从不关闭 reader。
从JsonReader的gsonAPI可以看出JsonReader实现了AutoClosable。这是否意味着 JsonReader 将自动关闭?如果是这样,它何时关闭以及如何关闭?
谢谢。
是的,您必须关闭 reader。
正如 shmosel 指出的那样,AutoClosable 可用于 Java 7.
中引入的 try-with-resource 语句
您可以通过以下方式调整代码:
try(JsonReader reader = new JsonReader(new InputStreamReader(
new FileInputStream(filename))))
{
JsonParser jsonParser = new JsonParser();
return jsonParser.parse(reader).getAsJsonObject();
}
我想在读取 json 文件时使用 gson 执行此操作:
JsonReader reader = new JsonReader(new InputStreamReader(
new FileInputStream(filename)));
JsonParser jsonParser = new JsonParser();
return jsonParser.parse(reader).getAsJsonObject();
我会在其他地方用返回的 JsonObject 做更多的事情。
我的问题是这是否可以,因为我从不关闭 reader。
从JsonReader的gsonAPI可以看出JsonReader实现了AutoClosable。这是否意味着 JsonReader 将自动关闭?如果是这样,它何时关闭以及如何关闭?
谢谢。
是的,您必须关闭 reader。 正如 shmosel 指出的那样,AutoClosable 可用于 Java 7.
中引入的 try-with-resource 语句您可以通过以下方式调整代码:
try(JsonReader reader = new JsonReader(new InputStreamReader(
new FileInputStream(filename))))
{
JsonParser jsonParser = new JsonParser();
return jsonParser.parse(reader).getAsJsonObject();
}