Gson 将 Json 解析为具有 SerializedName 字段的 Realm 对象

贡纳达格

我正在将 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

那么,我错过了什么?

mac229

这是因为@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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

GSON-无法将Json解析为具有List和Map的复杂POJO

使用gson将json解析为java对象的问题

GSON解析动态JSON字段

Java Gson将Json对象解析为数组

我无法使用Gson将Json文件解析为Java对象

如何通过gson解析具有多个对象的json数组?

Gson-将JSON解析为对象时忽略JSON字段

将json解析为具有小写字段名称的数据结构

Gson解析具有通用类型的Json对象

将json映射到具有改造的对象(GSON)

Scala保留字作为带有Json.writes [A]的JSON字段名(@SerializedName的等效播放)

SQL Server 2017 JSON将具有数组的对象解析为SQL行

尝试将JSON(使用GSON)读入一个对象,该对象具有另一个对象作为字段。

使用Gson将Json解析为具有通用字段的项目列表

如何使用gson将选定的字段从JSON映射到Java对象

Gson将长度为1的json数组解析为JsonArray对象而不是JsonObject对象

使用Gson的Map字段将Json对象复杂化为Java对象

找出在Json中是否确实存在由Gson SerializedName注释的类字段

使用具有相同字段名称的对象的Gson解析json

android,gson无法将json字符串解析为java对象

Gson-将JSON对象的JSON数组解析为ArrayList <org.json.JSONObject>

Gson - 解析具有不同字段名称和字段数量的 json

改造 - 解析没有 SerializedName 的 json

使用 GSON 将 JSON 嵌套对象解析为 Java POJO

Gson 无法将位于 json 对象中的 json 数组字符串解析为 JsonArray

将 JSON 字符串解析为具有精确值的 javascript 对象

如何使用 Gson 解析深层嵌套 json 对象中的字段并在 android 中进行改造?

将 minifyEnabled 设置为 true 时,无法使用 GSON 解析 json 对象

是否有与 @SerializedName 注释等效的 Gson @DeserializedName ?