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

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

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

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

現(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)在我們寫(xiě)一個(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ì)象通過(guò)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而我用的是國(guó)產(chǎn)fastjson

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容