我正在尝试将大对象保存到JSON。我使用Gson,但是我有一个与内存(Java堆空间)有关的异常。我读到我应该使用序列化。但我不知道该怎么做到最后。我正在尝试创建一个JsonWriter,但是我有一个例外,即JsonWriter是抽象方法,我必须重写方法:writeArray(); writeObject(); write()和close()。我不知道该如何改写它们。
代码:
private void sendFile(sessContext sc,OutputStream out){
String shipId = sc.getRequest().getParameter("shipid");
Ship ship = m_ship.find(Long.parseLong(shipId));
Gson gson = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT, Modifier.VOLATILE)
.setPrettyPrinting()
.create();
try{
JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8")); //<- error "'JsonWriter' is abstract, cannot be instantiated"
String toJson = gson.toJson(ship); // <- error ("Java heap space")
sendFile(sc,ship);}
catch(Excepiton e){
e.printStackTrace();
}
}
答案 0 :(得分:0)
您很可能忘记了导入Gson JsonWriter类,因此编译器认为您正在尝试使用相同名称的JEE接口
添加
import com.google.gson.stream.JsonWriter;
并确保您没有导入javax.json.*
或javax.json.JsonWriter