每个字段有多个 GSON @SerializedName?

2022-08-31 08:32:22

在 Gson 中,有没有办法将多个 JSON 字段映射到单个 Java 对象成员变量?

假设我有一个Java类...

public class MyClass {
    String id;
    String name;
}

我想将此单个类与两个不同的服务一起使用。但是,这两种服务在返回数据的方式上有所不同...

{ "id": 2341, "person": "Bob" }

...和。。。

{ "id": 5382, "user": "Mary" }

...分别。

有没有办法将 JSON 字符串中的 和 字段映射到 Java 对象中的字段?"person""user"name

(注意:我只需要从JSON字符串转换为Java对象 - 反之亦然。


答案 1

2015 年 10 月,Gson 版本 2.4更改日志)添加了在反序列化时使用备用/多个名称的功能。不再需要自定义类型适配器!@SerializedName

用法:

爪哇岛

@SerializedName(value="name", alternate={"person", "user"})

科特林

@SerializedName(value="name", alternate= ["person", "user"])

https://www.javadoc.io/doc/com.google.code.gson/gson/2.6.2/com/google/gson/annotations/SerializedName.html


答案 2

对于 Kotlin 粉丝

@SerializedName(value="name", alternate= ["person", "user"])