2013-11-10 4 views
1

Я извлекаю данные из веб-службы, которая возвращает String с представлением JSON моего объекта. Случается, что у моего объекта есть два ArrayList<> других объектов, помимо других простых атрибутов. Кажется, это проблема для Гсона. Я искал и ответы не соответствовали моей конкретной проблеме.(Gson) Объекты JSON для Java, содержащие ArrayList <Class>

Мой код, в основном:

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 дает мне эту строку (который, кажется, правильно, верно?):

{"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, Безразлично» t, скомпилированное с помощью NullPointerException, которое я получаю при попытке доступа к объекту. Вот моя конверсия из Json:

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

Может ли кто-нибудь дать мне возможность пройти эту конверсию, пожалуйста? Спасибо.

+1

и стек следа, за исключением является? –

+0

LogCat просто показывает исключение NullPointerException, когда я пытаюсь получить доступ к объекту «verbete». – vitorgreati

+0

Я серьезно сомневаюсь. Покажите нам, что SSCCE воспроизводит проблему. –

ответ

2

нравится этот

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); 
+0

Интересно! Это сработало! Итак, проблема заключалась в том, чтобы конвертировать из миллисекунд в объект Date? – vitorgreati

Смежные вопросы