在开发 Madoka 日记时,做到导出导入的功能时,我想偷个懒导出直接用 Gson 将 Java 对象转换为 json 然后放在 txt 中,导入的时候再将 json 转为 javaBean 就行啦。

而数据库我用的是 Litepal 直接搞,使用这个库的好处就是速度快,方便,适合新手。

但其实 sqlite 的语法和一些其他的语句并不难,所以用这个库就是为了方便…

使用 Litepal 储存数据时,需要调用 save() 方法。

这里我就遇到了一个问题,明明 save() 方法返回的是 true ,但数据库里没有需要保存的数据啊?

    Gson gson = new Gson();
    Diary diary = gson.fromJson(json, Diary.class);
    return diary.save();

这是调用 Gson 将 json 转换为 javabean 对象。

明明 Diary 的内容全是正确的,我开始询问度娘。

结果没找到跟我的问题直接相关的文章,结果我看到了有个人在吐槽啥 setting getting,我就想到了会不会是因为没有调用 Diary 的构造方法?

Diary 作为一个 Litepal 的,它是继承自 LitePalSupport 的,会不会是因为没有调用 LitePalSupport 的构造方法呢?

我将导入代码改了一下:

        Gson gson = new Gson();
        Diary diary = gson.fromJson(json, Diary.class);
        Diary saveDiary = new Diary();
        saveDiary.setId(diary.getId());
        saveDiary.setCreatedTime(diary.getCreatedTime());
        saveDiary.setLastUpdatedTime(diary.getLastUpdatedTime());
        ... 省略一万个代码
        return saveDiary.save();

果然,最后正常了…

(水文真开心)

咕咕咕