如何将改造数组保存到sqlite数据库?

时间:2015-06-23 10:29:55

标签: android json sqlite retrofit

这是我的jsonString:

{  
   "status":1,
   "data":[  
      {  
         "id":"39",
         "friendsInfo":{  
            "email":"test@gmail.com",
            "phone":null,
            "language":"en"
         }
      },
      {  
         "id":"39",
         "friendsInfo":{  
            "email":"test@gmail.com",
            "phone":null,
            "language":"en"
         }
      }
   ],
   "message":""
}

这是我的receiveClass:

public class mAnswer{

    @SerializedName("status")
    public int mEnterStatus;

    @SerializedName("data")
    public List<Data> dataList;

    public class Data {
        @SerializedName("id")
        public int mUserId;
        @SerializedName("friendsInfo")
        public GetUserDetails getUserDetails;

        public class GetUserDetails{
            @SerializedName("email")
            public int email;
            @SerializedName("phone")
            public String phone;
            @SerializedName("language")
            public String language;    
        }
    }
}

这是我成功接收答案的代码,我试图将这些数据保存到SQLite db:

private void saveList(){
        Vector<ContentValues> cVVector = new Vector<ContentValues>();

        int arraySize = mAnswer.dataList.size();
        for (int i = 0; i < arraySize; i++){

            // **HERE IS PROBLEM**

            cVVector.add(friendsValue);

        }

        if (arraySize > 0 ){
            ContentValues[] cvArray = new ContentValues[arraySize];
            cVVector.toArray(cvArray);

            mContext.getContentResolver().
                    bulkInsert(J4D_DB_Contract.UserFriendsEntry.CONTENT_URI, cvArray);
        }
    }

所以这是我的问题: 当我试图将列表数据保存到db?

时,如何更正调用@SerializedName元素

任何想法? 会很高兴任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

mAnswer.dataList.get(0);

回馈

 "id":"39",
     "friendsInfo":{  
        "email":"test@gmail.com",
        "phone":null,
        "language":"en"
     }

这就是你应该在循环中说的话:

  mAnswer.dataList.get(0).getFriendsObject().getEmail();
  mAnswer.dataList.get(0).getFriendsObject().getPhone();

我会用这个网站来生成我的POJO,因为我觉得它更干净。 http://www.jsonschema2pojo.org/ 该站点提供了定义良好的POJO架构,即可使用。 只需设置您正在使用JSON而不是JSON Scheme并使用GSON(如果您正在使用改造)。

将java文件复制到工作场所后。

如果变量具有相同的名称@SerializedName("jsonName")

,则不需要private String jsonName;