簡體   English   中英

(Gson)JSON到包含ArrayList的Java對象<Class>

[英](Gson) JSON to Java objects containing ArrayList<Class>

我正在從Web服務檢索數據,該服務返回一個帶有我對象的JSON表示形式的String。 發生的是,除了其他簡單屬性之外,我的對象還有兩個其他對象的ArrayList<> 對於Gson來說似乎是個問題。 我一直在搜索,答案與我的特定問題不符。

我的代碼基本上是:

Verbete

public class Verbete implements Serializable{
    private long id;
    private List<NomesVerbete> nomes;
    private List<SignificadosVerbete> significados;
    private int totalAcessos = 0;
    private Date dataLancamento;
    private int relevancia = 0;
    //getters and setters
}

NomesVerbete

public class NomesVerbete implements Serializable {
    private long id;
    private String nome;
    private String etimologia;
    //getters and setters
}

SignificadosVerbete

public class SignificadosVerbete implements Serializable{
    private long id;
    private String significado;
    private CategoriaVerbete categoria;
    //getters and setters
}

CategoriaVerbete

public class CategoriaVerbete implements Serializable{
    private long id;
    private String nome;
    private String descricao;
    private int serie;
    //getters and setters
}

Verbete到JSON的轉換為我提供了這個String(這似乎是正確的,對吧?):

{"id":81,"nomes":[{"id":124,"nome":"aleluia","etimologia":"asasiajisjaijs"},{"id":126,"nome":"amém","etimologia":"asasiajisjaijs"}],"significados":[{"id":67,"significado":"asasjaijsiajsoijaoisjaoisj","categoria":{"id":3,"nome":"Nada","descricao":"asuahushaus","serie":1}}],"totalAcessos":0,"dataLancamento":1382066568000,"relevancia":0}

但是,當我嘗試將此JSON字符串轉換為Verbete ,它不起作用,這是由嘗試訪問該對象時得到的NullPointerException批准的。 這是我從Json進行的轉換:

Gson gson = new GsonBuilder().create();
Verbete verbete = gson.fromJson(resposta[1], Verbete.class); //resposta[1] is the json string above

有人可以幫我進行一次轉換嗎? 謝謝。

像這樣

    final String json = "{\"id\":81,\"nomes\":[{\"id\":124,\"nome\":\"aleluia\",\"etimologia\":\"asasiajisjaijs\"},{\"id\":126,\"nome\":\"amém\",\"etimologia\":\"asasiajisjaijs\"}],\"significados\":[{\"id\":67,\"significado\":\"asasjaijsiajsoijaoisjaoisj\",\"categoria\":{\"id\":3,\"nome\":\"Nada\",\"descricao\":\"asuahushaus\",\"serie\":1}}],\"totalAcessos\":0,\"dataLancamento\":1382066568000,\"relevancia\":0}";
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(Date.class,
            new JsonDeserializer<Date>() {
                @Override
                public Date deserialize(JsonElement jsonElement, Type type,
                        JsonDeserializationContext context)
                        throws JsonParseException {
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTimeInMillis(jsonElement.getAsLong());
                    return calendar.getTime();
                }
            });
    Gson gson = gsonBuilder.create();
    Verbete verbete = gson.fromJson(json, Verbete.class);

    System.out.println(verbete);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM