如何将 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,其@SerializedName
在alternate
参数中也允许多个版本:
@Data
class PojoForGson {
private String url;
private int orderId;
private String imageId;
@SerializedName(value = "cellFilter" alternate = {"applicationFilter", "tissueFilter"})
private String filter;
}
我正在开发一个应用程序,我想将来自数据 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,其@SerializedName
在alternate
参数中也允许多个版本:
@Data
class PojoForGson {
private String url;
private int orderId;
private String imageId;
@SerializedName(value = "cellFilter" alternate = {"applicationFilter", "tissueFilter"})
private String filter;
}