- 转载请注明出处,谢谢
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/