首页 > 解决方案 > 没有从字符串值反序列化的字符串参数构造函数/工厂方法('22TP2TT490S')

问题描述

下面是 Rest Controller 类,它是发布请求

@PostMapping(value = "/details")
public SubSeriesDetailsRequest getGlobalSearchProductDetails(@RequestBody List<SubSeriesCodesRequest> codes,
        @QueryParam("contextString") String contextString) {

    LOGGER.info("Inside post request " + codes);

    String url = "http://www.example.com/details";
    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<Object> entity = new HttpEntity<>(headers);
    // SubSeriesDetailsRequest detailsRequest = new SubSeriesDetailsRequest();

    SubSeriesDetailsRequest response = restTemplate.postForObject(url, entity, SubSeriesDetailsRequest.class);
    return response;

}

我的 dto 课

@JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true)

公共类 SubSeriesCodesRequest 实现可序列化 {

private static final long serialVersionUID = 6880035785505252493L;
private List<String> codes;

public SubSeriesCodesRequest(List<String> codes) {
    super();
    this.codes = codes;
}

@JsonCreator
public SubSeriesCodesRequest() {

}

public List<String> getCodes() {
    return codes;
}

public void setCodes(List<String> codes) {
    this.codes = codes;
}

需要像下面这样实现发布请求
在此处输入图像描述

标签: javaspring-bootrestweb-services

解决方案


您的请求与预期的模型不匹配。你说你期望 a并且你正在发送List一个SubSeriesCodesRequest字符串数组。

您当前的模型似乎是这样的例子:

[
    {
        "codes": [
            "Code 1",
            "Code 2"
        ]
    }
]

尝试将您的方法更改为这样的方法public SubSeriesDetailsRequest getGlobalSearchProductDetails(@RequestBody SubSeriesCodesRequest request,,它应该可以正常工作。


推荐阅读