【问题标题】:Android: Mapping JSON into RealmObject with nested JSON objects doesn't workAndroid:使用嵌套的 JSON 对象将 JSON 映射到 RealmObject 不起作用
【发布时间】:2015-04-22 09:46:41
【问题描述】:

我有一个 JSON 字符串,其中包含一个嵌套的 json,例如

{
    "name": "name",
    ...
    ...
    "profile": {
        "id": 987,
        "first_name": "first name"
        ...
        ...
    }
}

我正在尝试使用realm.createObjectFromJson(Class clazz, String string) 方法将这个JSON 映射到Realm,问题是嵌套的JSON 没有被映射,结果RealmObject 对应于"profile" 的实例有0's 和 null's 用于所有字段。我在创建操作之前使用了realm.beginTransaction(),之后使用了realm.commitTransaction()

我在我的 Android 项目中使用'io.realm:realm-android:0.80.1'

你能告诉我我做错了什么吗?

谢谢。

编辑 这些是我的模型类。简单的 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;
}

profile 类只包含 getter 和 setter,它还包含其他 Strings 和 int,为了简单起见,我删除了它们。

【问题讨论】:

  • 你能发布你的模型类的内部和外部类吗?
  • 我发布了模型类。 RealmAddress 基本上是一个包含字符串的 Realm 对象,对于 RealmGender 也是如此。
  • Date 有没有可能搞砸了?

标签: android json realm


【解决方案1】:

您的 JSON 名称与您的子对象字段名称不匹配,这就是您看不到任何数据的原因。您的 profile 名称与 SomeClass 中的字段匹配,这意味着对象已创建(使用默认值),但由于没有匹配 Profile 中的字段,因此没有设置任何字段。

firstName != first_name
userId != id   

如果您想在 JSON 和 Java 模型中使用单独的名称,您应该使用 GSON (http://realm.io/docs/java/#gson) 之类的名称,因为 Realm 尚不直接支持该名称。

【讨论】:

  • 太棒了!感谢您指出了这一点!继续做好 Realm 团队的工作,期待查看该库的其他功能。
【解决方案2】:

使用这个:

public class Profile extends RealmObject {
    private String first_name;
    private int id;
    ...
}

检查您在 JSON 和您的类模型中的名称是否相同

【讨论】:

    猜你喜欢
    • 2021-07-06
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2013-10-02
    相关资源
    最近更新 更多