Android:将 JSON 映射到具有嵌套 JSON 对象的 RealmObject 不起作用
Android: Mapping JSON into RealmObject with nested JSON objects doesn't work
我有一个 JSON
字符串,其中包含嵌套的 json,例如
{
"name": "name",
...
...
"profile": {
"id": 987,
"first_name": "first name"
...
...
}
}
我正在尝试使用方法 realm.createObjectFromJson(Class clazz, String string)
将此 JSON
映射到 Realm
,问题是嵌套的 JSON 未映射,结果RealmObject
对应于 "profile"
的实例对所有字段都有 0
和 null
。我在创建操作之前使用了realm.beginTransaction()
,之后使用了realm.commitTransaction()
。
我正在为我的 Android 项目使用 'io.realm:realm-android:0.80.1'
。
你能告诉我我做错了什么吗?
谢谢。
编辑
这些是我的模型 classes。链接在一起的简单 RealmObjects
public class SomeClass extends RealmObject {
private String name;
private Profile profile;
public Profile getProfile() {
return profile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
}
public class Profile extends RealmObject {
private String firstName;
private String lastName;
private String birthdate;
private boolean newsLetter;
private boolean push;
private int userId;
private Date lastUpdate;
private RealmList<RealmAddress> addresses;
private RealmList<RealmGender> genders;
}
配置文件 class 仅包含 getter 和 setter,它包含其他字符串和整数,为了简单起见,我将其删除。
您的 JSON 名称与您的子对象字段名称不匹配,这就是您看不到任何数据的原因。您的 profile
名称与 SomeClass
中的字段匹配,这意味着对象已创建(使用默认值),但是 none 的字段与 Profile
中匹配,[=22] =] 已设置。
firstName != first_name
userId != id
如果您想在 JSON 和 Java 模型中使用不同的名称,您应该使用 GSON (http://realm.io/docs/java/#gson) 之类的东西,因为 Realm 尚不直接支持它。
使用这个:
public class Profile extends RealmObject {
private String first_name;
private int id;
...
}
检查您在 JSON 和 class 模型中的名称是否相同
我有一个 JSON
字符串,其中包含嵌套的 json,例如
{
"name": "name",
...
...
"profile": {
"id": 987,
"first_name": "first name"
...
...
}
}
我正在尝试使用方法 realm.createObjectFromJson(Class clazz, String string)
将此 JSON
映射到 Realm
,问题是嵌套的 JSON 未映射,结果RealmObject
对应于 "profile"
的实例对所有字段都有 0
和 null
。我在创建操作之前使用了realm.beginTransaction()
,之后使用了realm.commitTransaction()
。
我正在为我的 Android 项目使用 'io.realm:realm-android:0.80.1'
。
你能告诉我我做错了什么吗?
谢谢。
编辑 这些是我的模型 classes。链接在一起的简单 RealmObjects
public class SomeClass extends RealmObject {
private String name;
private Profile profile;
public Profile getProfile() {
return profile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
}
public class Profile extends RealmObject {
private String firstName;
private String lastName;
private String birthdate;
private boolean newsLetter;
private boolean push;
private int userId;
private Date lastUpdate;
private RealmList<RealmAddress> addresses;
private RealmList<RealmGender> genders;
}
配置文件 class 仅包含 getter 和 setter,它包含其他字符串和整数,为了简单起见,我将其删除。
您的 JSON 名称与您的子对象字段名称不匹配,这就是您看不到任何数据的原因。您的 profile
名称与 SomeClass
中的字段匹配,这意味着对象已创建(使用默认值),但是 none 的字段与 Profile
中匹配,[=22] =] 已设置。
firstName != first_name
userId != id
如果您想在 JSON 和 Java 模型中使用不同的名称,您应该使用 GSON (http://realm.io/docs/java/#gson) 之类的东西,因为 Realm 尚不直接支持它。
使用这个:
public class Profile extends RealmObject {
private String first_name;
private int id;
...
}
检查您在 JSON 和 class 模型中的名称是否相同