我正在将 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。这取决于您的需求
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句