Android fastjson和Realm的健全结合,有坑

  • 转载请注明出处,谢谢

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

Realm的装置以及fastjson的设置此虽不详细说了。详细的文档在此间
https://realm.io/docs/java/
,最尴尬英文文档,中文文档,不是最新的,而且看起别扭。

现今Realm Java 的新颖版本是 1.1.0,fastjson Android的本是1.1.52

安装Realm Java

每当列蒙(最外层的build.gradle文件)build.gradle中追加

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

于运被(一般是名为app模型)build.gradle增加

apply plugin: 'realm-android'

安装fastjson

以以中(一般是名为app模型)build.gradle增加

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

现行咱们写一个模子

/**
 * 
 * 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对象通过fastjson转为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+"");
    }
}

此时段,我当可以健全的运转了,但是运行的时段,报生了。

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

岂化解?这里有三三两两种植方式。。

首先种:直接下 RxJava

老二栽,不思量以 RxJava,那便创造一个 Observable 空文件

package rx;

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

实际上解决方案是合法提供的,只是内的事例是Jackson而自之所以之凡国产fastjson

Realm
的详细使用此就是隐瞒了。。。有不少同伙分享了,但本身还是建议看官方文档
https://realm.io/docs/java/

相关文章