我正在尝试将大对象保存到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();
        }
}

最佳答案

您很可能忘记了导入Gson JsonWriter类,因此编译器认为您正在尝试使用具有相同名称的JEE接口



import com.google.gson.stream.JsonWriter;


并确保您没有像javax.json.*javax.json.JsonWriter这样的导入

关于java - Gson-如何使用JsonWriter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53116544/

10-12 04:59