package com.kbs.kbsintranett;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class ChoicesAdapter implements JsonDeserializer<List<GravityField.Choice>> {
    @Override
    public List<GravityField.Choice> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        // Hvis feltet er "null" eller en tom tekststreng, returner en tom liste
        if (json.isJsonNull() || (json.isJsonPrimitive() && json.getAsString().isEmpty())) {
            return new ArrayList<>();
        }

        // Hvis det faktisk er en liste (Array), les den som vanlig
        if (json.isJsonArray()) {
            List<GravityField.Choice> list = new ArrayList<>();
            for (JsonElement e : json.getAsJsonArray()) {
                list.add(context.deserialize(e, GravityField.Choice.class));
            }
            return list;
        }

        // Hvis vi får noe annet rart (f.eks. en tekst som ikke er tom), ignorer det for å unngå krasj
        return new ArrayList<>();
    }
}