如何将 pojo 类的字段映射到从 API 返回的字符串对象



我正在开发一个应用程序,希望将来自数据api的字符串对象转换为json对象。现在,我将字符串对象转换为json,但出现了一个问题。我的pojo类有多个字段,其中有相应的getter和setter,其中一个是"filterName";看起来像

@SerializedName(value="cellFilter", alternate="tissueFilter")
private String filterName;

它所做的是提取与";cellFilter";以及";组织过滤器";。我不确定这是否是一种优化的方式来使用相同的字段退役数据。此外,我想使用同一个字段来检索另一个值,但我不知道如何做到这一点(即我想使用filterName来获取tissueFilter、cellFilter和applicationFilter的值(。

数据对象如下所示注意,tissueFilter、cellFilter和applicationFilter有3个字符串,它们来自数据api。在java对象中转换后,它们看起来像这样,

tissufilter


{
"url": "xyz",
"sortOrder": 8,
"imageId": "1111",
"tissueFilter": "Heart"
}

cellFilter

{
"url": "xyz",
"sortOrder": 6,
"imageId": "2222",
"cellFilter": "Pancreas"
}

和应用过滤器

{
"applicationFilter": "c56",
"url": "xyz",
"sortOrder": 1,
"imageId": "3333",
}

谢谢

如果Jackson JSON库用于序列化/取消序列化JSON数据,则应应用@JsonAlias注释来反序列化可能具有不同名称的字段:

@Data
class Pojo {
private String url;
private int orderId;
private String imageId;
@JsonAlias({"applicationFilter", "cellFilter", "tissueFilter"})
private String filter;
}

在对上述JSON片段进行反序列化之后,字段filter应设置为定义为"applicationFilter"等的适当值。


然而,问题中似乎使用了Gson,其@SerializedName也允许alternate参数中的多个版本:

@Data
class PojoForGson {
private String url;
private int orderId;
private String imageId;
@SerializedName(value = "cellFilter" alternate = {"applicationFilter",  "tissueFilter"})
private String filter;
}

最新更新