繁体   English   中英

Gson使用序列化名称字段将Json解析为Realm对象

[英]Gson parsing a Json to a Realm object with SerializedName fields

我正在将json字符串解析为Realm对象,但是json具有键“ id”,因此我正在使用serializedName绕过它。

这是我的Json(以下示例中的jsonString)

{
    "id": "someuuidString",
    ...
    (some more irrelevant fields)
}

这是我的物体清理

public class MyObject extends RealmObject {

    @PrimaryKey
    private long id;

    @SerializedName("id")
    private String MyObjectId;
    ...
    (some more irrelevant fields, constructors, getters and setters)
}

然后在代码中我尝试以下

Gson gson = new GsonBuilder().create();
MyObject obj = gson.fromJson(jsonString, MyObject.class);

因此,除了正确解析外,它还会因以下异常而崩溃

java.lang.IllegalArgumentException: class com.example.objects.MyObject declares multiple JSON fields named id

所以,我想念什么?

这是因为@SerializedName将MyObjectId视为“ id”,因此您有2个称为id的字段。

将对象更改为

public class MyObject extends RealmObject {

    @PrimaryKey
    private long databaseId; 

    @SerializedName("id")
    private String MyObjectId;
    ...
    (some more irrelevant fields, constructors, getters and setters)
}

通常,更好的方法是删除此databaseId并在MyObjectId上设置@PrimaryKey。 这取决于你的需求

因为ID与您的主键和JSON键冲突,更改主键名称,

尝试如下

public class MyObject extends RealmObject {

    @PrimaryKey
    private long primaryId;

    @SerializedName("id")
    private String MyObjectId;
    ...
    (some more irrelevant fields, constructors, getters and setters)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM