5 回答
TA贡献1818条经验 获得超11个赞
如何将多个 JSON 响应映射到单个 Java POJO?
由于这两个响应似乎彼此完全不同,没有任何共同点,因此我不会尝试使用一个类来阅读两个响应。
期待一种将不同结构化 JSON 映射到单个 POJO 的通用方法。
您可以将两个响应都解析为 a
Map<String, Object>
,然后将值映射到一个公共类。您可以创建单独的类来映射每个响应。它将允许您将它们解耦并根据需要发展它们。当从一个对象映射到另一个对象时,您还可以使用MapStruct等映射框架来减少样板代码。
TA贡献1852条经验 获得超7个赞
我建议使用 Jackson Json Views。这是相同的示例:
例子
public class Views {
public class Global {
}
public class Internal extends Global {
}
}
class XXX {
@JsonView(Views.Global.class)
@JsonProperty("accountHolder")
private String accountHolder;
@JsonView(Views.Internal.class)
@JsonProperty("routingNumber")
private String routingNumber;
}
希望能帮助到你。
TA贡献1809条经验 获得超8个赞
我建议使用@JsonProperty("") 和@JsonAlias("")。
class XXX {
@JsonAlias("accountName")
@JsonProperty("ACCOUNT_NAME")
private String name;
@JsonAlias("routingNumber")
@JsonProperty("ROUTING_NUMBER")
private String routing;}
我希望它有所帮助。
TA贡献1780条经验 获得超1个赞
我所做的是创建了一个 MyResponse 模型,其中基本上包含您希望获得的 JSON 响应中的所有响应字段。MyResponse 具有 c-tor 或接收这些字段或允许设置它们的设置器。
然后我创建了某种服务类 MyService,它可以发出多个请求并获取响应。
然后你只需在某种经理类或任何你称之为的类中做这样的事情:
MyService mySer = new MyService();
MyResponse myRes = new MyResponse(
mySer.getDetails(),
mySer.getPicture(),
mySer.getSomethingElse()
);
这些调用(getDetails、getPicture...)将请求发送到端点并返回响应,然后将响应映射到 MyResponse 类构造函数的字段中。这是由框架发生的,因此 MyResponse 具有 FIELD 类型的注释 @XmlRootElement 和 @XmlAccessorType 以确保发生这种情况。如果出于某种原因,您不想创建包含 getPicture 结果的响应,例如,您只需将 null 分配给该输入参数。
添加回答
举报