弹簧框架:@RequestBody 中的 UUID

下一个示例工作正常:


@PostMapping("/test/{id}")

public ResponseEntity test(@PathVariable UUID id)

{

    System.out.println(id);

    return ResponseEntity.ok().build();

}

但是当我尝试在 RequestBody 中使用 UUID


@PostMapping("/test")

public ResponseEntity test(@RequestBody TestDTO testDTO)

{

    System.out.println(testDTO.id);

    return ResponseEntity.ok().build();

}

然后我进入null控制台


id 字段具有 UUID 类型


public class TestDTO {

    UUID id;

}

如果将 UUID 替换为字符串,则代码可以正常工作。


我的请求看起来像这样


curl -XPOST -H "Content-Type: application/json" -d '{"id": "00000000-0000-0000-0000-000000000000"}' localhost:8080/test/test

如何使用 UUID 修复它?


蝴蝶不菲
浏览 101回答 2
2回答

幕布斯7119047

@JsonDeserialize用字段注释可以正常工作:import com.fasterxml.jackson.databind.annotation.JsonDeserialize;import java.util.UUID;public class TestDTO {    @JsonDeserialize    UUID id;}升级版:这个解决方案也可以在没有注释的情况下工作:public class TestDTO {    private UUID id;    public UUID getId() {        return id;    }    public void setId(UUID id) {        this.id = id;    }}

翻过高山走不出你

如果您添加id属性的 getter/setter,那么您将获得它的值。在这里我找到了一个关于 JSON Marshalling 的很好的演示
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java