json 如何在Java Spring中编辑获取请求的响应实体?

92vpleto  于 2022-12-30  发布在  Java
关注(0)|答案(1)|浏览(108)

我有一个小型的Java Springboot后端和一个mySQL数据库,要保存到数据库中的对象的数据类如下所示:

@Entity
    public class Product {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
    
        private String name;
    
        private String category;
    
        private LocalDate expirationDate;
    
        // getters, setters ...

控制器类中的GET方法如下所示:

@GetMapping("/products")
public ResponseEntity<Iterable<Product>> getProducts() {
   return ResponseEntity.ok(productRepository.findAll());
}

现在我在发布GET请求时返回的json将expirationDate属性格式化为int[],如下所示:

"expirationDate": [
            2023,
            1,
            22
        ]

我如何在创建json时格式化它,使其看起来像yyyy-mm-dd,因为这也是我用来POST它的格式。另外,当我用Blazor(C#)编写前端时,我需要一种可以轻松转换为C#数据类中DateOnly属性的格式。

cgfeq70w

cgfeq70w1#

更改控制器以返回产品列表,如下所示:

@GetMapping("/products")
public ResponseEntity<List<Product>> getProducts() {
    return ResponseEntity.ok(productRepository.findAll());
}

另外,我建议使用lombok并在你的实体上放置@Data注解。
我只是复制你的,你会得到这样的数据:

[
{
    "id": 1,
    "name": "Iphone",
    "category": "apple",
    "expirationDate": "2022-12-23"
},
{
    "id": 2,
    "name": "Samsung",
    "category": "samsung",
    "expirationDate": "2022-12-23"
}
]

如果你需要,这是你的职位Map:

@PostMapping("/products")
public Product createProduct(@RequestBody Product product) {
    productRepository.save(product);
    return product;
}

相关问题