我正在以JSON的形式向Spring控制器发送响应,我想将它映射到两个不同的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)
{
}
我知道怎么做一个pojo。但是不知道如何将相同的JSON映射到两个Pojo。
答案 0 :(得分:2)
我不知道有任何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);
}
但这是一个更复杂的IMO。
答案 1 :(得分:1)
您可以将2个POJO包装在另一个POJO中。
例如。
class PapaPojo {
private BabyPojo1 babyPojo1;
private BabyPojo2 babyPojo2;
}
BabyPojo1
和BabyPojo2
是原始的2个POJO。