我正在以 JSON 的形式将响应发送到 spring Controller ,并且我想将其映射到两个不同的 POJO。因为它包含两个 pojo 的组合数据。我该怎么做。
我发送 JSON 的代码
$("#configure-buy-online").click(
function(e) {
var customProduct = '{"name":"Custom'
+ '","vcpu" : "'
+ $('#core')
.val()
+ '","ram" : "'
+ $('#ram')
.val()
+ '","hddSata":"'
+ $('#hddsata')
.val()
+ '"}';
console.log("Product :"+ customProduct);
$
.ajax({
type : 'POST',
url : '../addToCartCustomize.do',
dataType : 'json',
contentType : 'application/json',
data : customProduct,
success : function(data) {
alert("Success");
},
error : function() {
}
});
});
Spring Controller
String addCustomProductToCart(@RequestBody CustomProduct customProduct)
{
}
我知道如何为 One pojo 做到这一点。但不知道如何将相同的 JSON 映射到两个 Pojo。
最佳答案
我不知道有任何 JAX-RS 或类似的方法可以做到这一点。我会读取未修改的 JSON(作为文本)并直接使用 Jackson:
void doSomething(@RequestBody String pureJson) {
ObjectMapper mapper = new ObjectMapper();
PojoA pojoA = mapper.readValue(pureJson, PojoA.class);
PojoB pojoB = mapper.readValue(pureJson, PojoB.class);
}
或者,您可以将 PojoA 转换为 JSON,然后转换为 PojoB,如下所示:
void doSomething(@RequestBody PojoA pojoA) {
ObjectMapper mapper = new ObjectMapper();
String pureJson = mapper.writeValueAsString(pojoA);
PojoB pojoB = mapper.readValue(pureJson, PojoB.class);
}
但这在我看来有点复杂。
关于java - 将 JSON 响应映射到多个 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448839/