spring框架:@RequestBody中的UUID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring框架:@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;
}

如果用String替换UUID,那么代码工作正常。

我的要求看起来像这样

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

如何使用UUID修复它?

答案

如果添加id属性的getter / setter,那么您将获得它的值。

here我找到了关于JSON编组的一个很好的演示

另一答案

@JsonDeserialize字段注释工作正常:

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import java.util.UUID;

public class TestDTO {
    @JsonDeserialize
    UUID id;
}

UPD:

这个解决方案也可以没有注释:

public class TestDTO {

    private UUID id;

    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }
}

以上是关于spring框架:@RequestBody中的UUID的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring MockMVC 测试 Spring 的 @RequestBody

Spring中的@RequestBody和@ResponseBody注解

Spring中的注解 @RequestBody和@ResponseBody的使用和区别

重磅来袭:Spring之RequestBody的使用姿势小结

自定义spring参数注解 - 打破@RequestBody单体限制

Spring中的@RequestBody注解与常规的HTTP方法的传值方式