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

How to map pojo class's field to string object returning from API

我正在开发一个应用程序,我想将来自数据 api 的字符串对象转换为 json object.Now,我将字符串对象转换为 json 但是是个问题。 我的 pojo class 有多个字段以及相应的 getter 和 setter,其中之一是“filterName”,它看起来像

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

它的作用是提取与“cellFilter”和“tissueFilter”关联的值。我不确定它是否是使用同一字段淘汰数据的优化方法。另外,我想使用同一个字段来检索另一个值,但我不知道该怎么做(即我想使用 filterName 来获取 tissueFilter、cellFilter 和 applicationFilter 的值)。

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

组织过滤器


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

细胞过滤器

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

和应用过滤器

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

谢谢

如果 Jackson JSON 库用于 serializing/deserialing 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,其@SerializedNamealternate参数中也允许多个版本:

@Data
class PojoForGson {
    private String url;
    private int orderId;
    private String imageId;

    @SerializedName(value = "cellFilter" alternate = {"applicationFilter",  "tissueFilter"})
    private String filter;
}