从嵌套对象字段映射主键

时间:2016-01-20 12:32:04

标签: android realm

我有一个带有Object的RealmObject类,它的实际PrimaryKey是这个对象中的String。但是不允许将Object作为主键。

public class Model extends RealmObject {
    @PrimaryKey
    private Id _id;
    ...
}

public class Id extends RealmObject {
    private String id; // the primary key for the class Model
    ...
}

因为目前无法更改服务器的响应结构,所以我尝试了不同的方法来解决问题。但到目前为止他们没有工作。我在Android Studio中为我的项目使用“io.realm:realm-gradle-plugin:0.87.2”和“realm-android”插件。

1

public class Model extends RealmObject {
    @PrimaryKey
    private String id;
    private Id _id;

    public String getId() {
        return _id.getId();
    }
    ...
}

2

public class Model extends RealmObject {
    @PrimaryKey
    @SerializedName("_id.id")
    private String id;
    private Id _id;
    ...
}

你会如何解决?是否可以只使用Realm或者我是否必须使用第二个工具,如gson库?

编辑:

谢谢beeender的答案!这是有效的,但如果有人有更好的解决方案,欢迎你。

            JSONArray jsonArray = null;
            try {
                jsonArray = new JSONArray(total.toString());
                for(int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String id = jsonObject.getJSONObject("_id").getString("id");
                    jsonObject.put("id", id);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

1 个答案:

答案 0 :(得分:1)

谢谢beeender的答案!这是有效的,但如果有人有更好的解决方案,欢迎你。

        JSONArray jsonArray = null;
        try {
            jsonArray = new JSONArray(total.toString());
            for(int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String id = jsonObject.getJSONObject("_id").getString("id");
                jsonObject.put("id", id);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }