Gson-如何使用JsonWriter?

时间:2018-11-02 10:12:45

标签: java gson

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

1 个答案:

答案 0 :(得分:0)

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

添加

import com.google.gson.stream.JsonWriter;

并确保您没有导入javax.json.*javax.json.JsonWriter