将JSON字符串转换为对象列表

时间:2018-08-17 15:12:17

标签: android json

我正在尝试将JSON字符串转换为Objects(附件)的列表,但是当我尝试这样做时,却得到了NPE

 List<Attachment> attachments = new ArrayList<>();

 Timber.d("EMPTY------>"+dbResponse.get(i).getAttachments().isEmpty());
 Timber.d("SIZE------>"+dbResponse.get(i).getAttachments().length());

for(...){ 

 if(dbResponse.get(i).getAttachments().length()!=0) //has attachments?
   {
         //transforms the string into list of attachments
         Type listType = new TypeToken<List<Attachment>>(){}.getType();
         attachments = new Gson().fromJson(dbResponse.get(i).getAttachments(), listType);

         for(int j=0; j<attachments.size() ; j++) {...}
}

我在attachments.size()上看到错误。 错误是:

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
                                                                 at com.rd.ch.repository.AppDataManager.lambda$findAllMessages$1$AppDataManager(AppDataManager.java:177)
                                                                 at com.rdev.chatapp.repository.AppDataManager$$Lambda$1.apply(Unknown Source)

木材正在返回EMPTY->falseSize->4。 我在代码上做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

您想将dbResponse.get(i).getAttachments()读为json,但看起来它不是有效的json,并且Gson().fromJson返回null

打印出dbResponse.get(i).getAttachments(),您将看到要读为Json的内容。