在Gson中有没有什么方法可以将多个JSON字段Map到单个Java对象成员变量?
假设我有一个Java类...
public class MyClass {
String id;
String name;
}
我想将这个类与两个不同的服务一起使用。然而,这两个服务在返回数据的方式上有所不同...
{ "id": 2341, "person": "Bob" }
还有......
{ "id": 5382, "user": "Mary" }
...分别。
有没有办法将JSON字符串中的"person"
和"user"
字段Map到Java对象中的name
字段?
(Note:我只需要从JSON字符串转换为Java对象-从来没有相反的方法。)
4条答案
按热度按时间bqujaahr1#
2015年10月,Gson version 2.4(changelog)添加了在反序列化时为
@SerializedName
使用替代/多个名称的功能。不再需要自定义TypeAdapter!用法:
java
Kotlin
https://www.javadoc.io/doc/com.google.code.gson/gson/2.6.2/com/google/gson/annotations/SerializedName.html
68de4m5k2#
为Kotlin粉丝准备的
8dtrkrch3#
不支持为Gson中的字段定义多个
@SerializedName
注解。ReflectiveTypeAdapterFactory
类的内部类Adapter<T>
的read(JsonReader in)
方法中查看实现(反序列化如何工作)。name
、person
和user
json标记,并将它们Map到自定义类MyClass
的name字段:Examples about TypeAdapters.
返回:反序列化字段时字段的替代名称
cwxwcias4#
对于Kotlin,我在下面使用,但不起作用
所以我编辑了一下,在这里效果很好!!