JSONPROPERTY用于Spring Boot Controller中的Java Records

发布于 2025-01-19 09:04:05 字数 1141 浏览 0 评论 0 原文

我尝试使用 @jsonproperty 注释中的Spring Boot Controller中的Java Records,但Jackson不会将值绑定到记录字段。

示例

public record SimpleQuery(
       @JsonProperty("simple_text") String text
) {}

@RestController
public class SimpleController {
    @GetMapping
    public String get(SimpleQuery query) {
        return query.text();
    }
}

我想调用/?simple>/?simple_text = test = test = test = test ,但它仅获得/?text = test 。请帮助我在Spring Boot 2.6.6(Java 17)上解决此问题。

其他:

upd ford: 它与 @postrequest + @requestbody

@RestController
public class SimpleController {
    @PostMapping
    public String get(@RequestBody SimpleQuery query) {
        return query.text();
    }
}

I try to use Java records in Spring Boot controller with @JsonProperty annotation but Jackson does not bind values to record fields.

Example:

public record SimpleQuery(
       @JsonProperty("simple_text") String text
) {}

@RestController
public class SimpleController {
    @GetMapping
    public String get(SimpleQuery query) {
        return query.text();
    }
}

I would like to call /?simple_text=test, but it only gets /?text=test. Please, help me to resolve this problem on Spring Boot 2.6.6 (Java 17).

Additional:

UPD:
It works great with @PostRequest+@RequestBody:

@RestController
public class SimpleController {
    @PostMapping
    public String get(@RequestBody SimpleQuery query) {
        return query.text();
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

菩提树下叶撕阳。 2025-01-26 09:04:05

即使URL没有请求参数(Springboot 2.6.6,Java 17),这也应该有效:

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static record SimpleQuery(@JsonProperty("simple_text") String text) {}

    @GetMapping
    public String get(@RequestParam Map<String, String> map) {
        SimpleQuery query = new ObjectMapper().convertValue(map, SimpleQuery.class);
        return query.text();
    }

This should work even when url has no request parameters (SpringBoot 2.6.6, Java 17):

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static record SimpleQuery(@JsonProperty("simple_text") String text) {}

    @GetMapping
    public String get(@RequestParam Map<String, String> map) {
        SimpleQuery query = new ObjectMapper().convertValue(map, SimpleQuery.class);
        return query.text();
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文