Gson - как использовать JsonWriter? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь сохранить большой объект в JSON. Я использую Gson, но у меня есть исключение, связанное с памятью (пространство кучи Java). Я прочитал, что я должен использовать сериализацию. Но я не знаю, как это сделать до конца. Я пытаюсь создать JsonWriter, но у меня есть исключение, что JsonWriter является абстрактным методом, и я должен переопределить методы: writeArray (); writeObject (); написать () и закрыть (). Я не знаю, как их переопределить.

Код:

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 голосов
/ 02 ноября 2018

Скорее всего, вы забыли импортировать класс Gson JsonWriter, поэтому компилятор считает, что вы пытаетесь использовать интерфейс JEE с тем же именем

Добавить

import com.google.gson.stream.JsonWriter;

и убедитесь, что у вас нет импорта, например javax.json.* или javax.json.JsonWriter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...