java - 将 JSON 响应映射到多个 POJO

标签 java json spring jackson

我正在以 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/

相关文章:

java - 加载上下文后,Spring java config 启动 @Async 方法

java - 将字符串(星期几)转换为时间戳

java - Aapt错误Android Studio

php - 30 个唯一变量的 SQL 查询

json - Spring REST Controller 返回空的 JSON。可迭代的数据结构。为什么?

java - 无法更改 spring-boot 过滤器映射

Java - 基于多个分隔符拆分字符串

java - 在对 Java 代码进行逆向工程时,EA 能否像 Visual Paradigm 一样显示包之间的依赖关系?

javascript - Node - 转换为 JSON 失败,但可以在控制台中打印

java - 如何从 BindingResult 获取 Controller 中的错误文本