![](/img/trans.png)
[英]How to parse json object with gson based on dynamic SerializedName in Android
[英]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.