Android fastjson和Realm的完美結(jié)合,有坑

  • 轉(zhuǎn)載請(qǐng)注明出處,謝謝

源碼地址:https://github.com/quanke/FastjsonRealm

Realm的安裝和fastjson的安裝這里就不詳細(xì)說了。詳細(xì)的文檔在這里 https://realm.io/docs/java/ ,最好看英文文檔,中文文檔,不是最新的,而且看起來別扭。

現(xiàn)在Realm Java 的最新版本是 1.1.0,fastjson Android的版本是1.1.52

安裝Realm Java

在項(xiàng)目中(最外層的build.gradle文件)build.gradle中增加

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:1.1.0"
    }
}

在應(yīng)用中(一般是名為app模型)build.gradle增加

apply plugin: 'realm-android'

安裝fastjson

在應(yīng)用中(一般是名為app模型)build.gradle增加

compile 'com.alibaba:fastjson:1.1.52.android'

現(xiàn)在我們寫一個(gè)模型

/**
 * 
 * Created by quanke(http://quanke.name) on 2016/7/18.
 */
public class User extends RealmObject implements Serializable{


    public User() {

    }

    private String          name;
    private int             age;

    @Ignore
    private int             sessionId;

    // Standard getters & setters generated by your IDE…
    public String getName() { return name; }
    public void   setName(String name) { this.name = name; }
    public int    getAge() { return age; }
    public void   setAge(int age) { this.age = age; }
    public int    getSessionId() { return sessionId; }
    public void   setSessionId(int sessionId) { this.sessionId = sessionId; }
}

把User對(duì)象通過fastjson轉(zhuǎn)為String


/**

 * Created by quanke(http://quanke.name) on 2016/7/18.
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        User user = new User();
        user.setAge(2);
        user.setName("http://quanke.name");

        String userStr = JSON.toJSONString(user);

        Log.d("userStr:",userStr);

        User userObj = JSON.parseObject(userStr,User.class);

        Log.d("userObj:",userObj+"");
    }
}

這個(gè)時(shí)候,我以為可以完美的運(yùn)行了,但是運(yùn)行的時(shí)候,報(bào)異常了。

java.lang.NoClassDefFoundError: rx.Observable
at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
...

怎么解決?這里有兩種方法。。

第一種:直接使用 RxJava

第二種,不想使用 RxJava,那就創(chuàng)建一個(gè) Observable 空文件

package rx;

public class Observable {
    // Dummy class required for Jackson-Databind support if
    // RxJava is not a project dependency.
}

其實(shí)解決方案是官方提供的,只是里面的例子是Jackson而我用的是國產(chǎn)fastjson

Realm 的詳細(xì)使用這里就不說了。。。有很多小伙伴分享了,但我還是建議看官方文檔 https://realm.io/docs/java/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,593評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評(píng)論 19 139
  • 去過越多的地方 越明白歸宿在何方 遇見過越多的人 越知道該和誰相伴 日子如水 匆匆而過 要愈發(fā)清醒 才能愈幸福 留...
    芹姨閱讀 343評(píng)論 0 0
  • 濕發(fā)睡覺的危害 傷發(fā)又傷身 1傷害發(fā)絲 頭發(fā)沒有干透的時(shí)候還處于比較脆弱的狀態(tài),濕頭發(fā)睡覺時(shí)枕頭與頭發(fā)之間的摩擦?xí)?..
    毛發(fā)君閱讀 720評(píng)論 0 0
  • ( ????? ) 步奏詳解 ①2B,確定所有物體的高度與寬度,畫出基本輪廓。 ②畫明暗交界線,注意排線方向。 ③...
    素己閱讀 1,141評(píng)論 2 6