繁体   English   中英

使用@JsonAlias 使用@RequestBody 转换成Pojo

[英]Using @JsonAlias to Convert into Pojo Using @RequestBody

我有 JSON 架构,如下所示,

{
    "prty_id": "hgh",
    "customer_id": "ghjghjghj"
}

我有 model class 如下所示

public class PARTY   {
    @JsonAlias({"prty_id", "prtyId"})
    String prtyId;

    @JsonAlias({"customer_id", "customerId"})
    String customerId;
    ......
}

当我尝试使用@RequestBody PARTY 主体作为方法参数使用@RequestBody注释反序列化时,我得到了POJO class 字段的null 值。

@PostMapping(value="/party/db",produces="application/json",consumes="application/json")


public Party controller(@RequestBody Party body)
//here in body parameter only i am getting null values
                {
                    ObjectMapper obj = new ObjectMapper();
                    String json = obj.writeValueAsString(body);
                    System.out.println("===="+json);

                    PARTY p = obj.readValue(json, PARTY.class);
                    System.out.println("------"+p);
                    p.toString();
                    return p;
                }

您需要在 class 中写入吸气剂,以便 jackson 去噪化可以工作。 在您的定义中也更好地使用 CamelCase:

public class Party {

    @JsonAlias({"prty_id", "prtyId"})
    String prtyId;

    @JsonAlias({"customer_id", "customerId"})
    String customerId;

    public String getPrtyId() {
        return prtyId;
    }

    public String getCustomerId() {
        return customerId;
    }
}

编辑:添加 controller:

@PostMapping("/test")
public Party test(@RequestBody Party body) {
    return body;
}

我建议将@JsonProperty@JsonAlias一起使用。 试试看。

@JsonProperty
@JsonAlias(xxx, xxx)
private String xxx;

就是这样。 乍一看,代码应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM