Кастомный Gson TypeAdapter не вызывается

173
20 марта 2018, 01:24

Всем привет,

Пытаюсь создать typeadapter для своего класса следующим образом:

public class AssetSerializer extends TypeAdapter<List<Asset>> {
@Override
public void write(JsonWriter out, List<Asset> value) throws IOException {
    out.beginArray();
    for (Asset asset : value) {
        out.beginObject();
        out.name("name").value(asset.getName());
        out.name("code").value(asset.getCode());
        out.endObject();
    }
    out.endArray();
}
@Override
public List<Asset> read(JsonReader in) throws IOException {
    String temp_name = "";
    String temp_code = "";
    List<Asset> list = new LinkedList<>();
    in.beginArray();
    while (in.hasNext()) {
        switch (in.peek()) {
            case BEGIN_OBJECT:
                in.beginObject();
                while (in.hasNext()) {
                    switch (in.nextName()) {
                        case "name":
                            temp_name = in.nextString();
                            continue;
                        case "code":
                            temp_code = in.nextString();
                            continue;
                    }
                }
                in.endObject();
                Asset temp_asset = new Asset(temp_name, temp_code);
                list.add(temp_asset);
                continue;
        }
    }
    in.endArray();
    return list;
}

В следующем коде я пытаюсь сериализовать лист Asset'ов.

Asset asset1 = new Asset("Asset1", "code_1");
    Asset asset2 = new Asset("Asset2", "code_2");
    LinkedList<Asset> temp_list = new LinkedList<Asset>();
    temp_list.add(asset1);
    temp_list.add(asset2);
    Type assetsType = new TypeToken<List<Asset>>(){}.getType();
    Gson gson = new GsonBuilder()
            .setPrettyPrinting()
            .registerTypeAdapter(assetsType, new AssetSerializer())
            .create();
    String json = gson.toJson(temp_list);

При этом Gson не вызывает мой класс, а использует свои стандартные методы для сериализации.

READ ALSO
java. Цикл for совершает по два прохода за раз

java. Цикл for совершает по два прохода за раз

ЗдравствуйтеНикак не могу понять, почему при следующем коде фор по два прохода за раз делает, когда я ожидаю один проход?

178
Как сделать методы общими для 2 классов

Как сделать методы общими для 2 классов

ЗдравствуйтеПомогите решить проблему

193
Счётчик объектов

Счётчик объектов

Как создать в конструкторе объекта счётчик, который будет вписывать в поле объекта номер его создания? То есть первый объект имеет номер...

175