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" 的实例对所有字段都有 0null。我在创建操作之前使用了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 模型中的名称是否相同