gson 如何将pojo类的字段Map到API返回的字符串对象

bf1o4zei  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(200)

我正在开发一个应用程序,我想将来自数据API的字符串对象转换为json对象。现在,我将字符串对象转换为json,但出现了一个问题。我的pojo类有多个字段,其中一个字段是“filterName”,它看起来像

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

它所做的是提取与“cellFilter”和“tissueFilter”关联的值。我不确定使用相同字段收回数据是否是一种优化的方式。此外,我想使用相同字段检索另一个值,但我不知道如何进行(即我想使用filterName获取tissueFilter、cellFilter和applicationFilter的值)。
数据对象如下所示注-tissueFilter,cellFilter和applicationFilter有3个字符串,它们来自数据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",
  }

谢谢你

eoigrqb6

eoigrqb61#

如果使用JacksonJSON库对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;
}

相关问题