【问题标题】:Return an array of objects with fieldName in spring boot在spring boot中返回一个带有fieldName的对象数组
【发布时间】:2021-03-25 09:31:20
【问题描述】:

我是springboot的新手。我的要求如下。 我有 carModel 类如下。

@Data
public class CarModel {
 private modelName;
 private available;
}

现在我有一个返回对象列表的休息端点。所以资源看起来像这样。

@GetMapping("/models")
public List<CarModel> getModels(){ 
//Resource Body
}

但这会在 json 中返回一个对象数组,没有字段名称。但我需要 json ,像这样:

{ "AllModels" : [ { "modelName" : "Ferrari", "available" : "Yes"} , {"modelName": "Tesla" , "available" : "Yes"} ]

如何在 Spring Boot 中执行此操作?我确实知道一种解决方案,方法是再定义一个包含 CarModel 对象列表的包装类。但是有没有更好的方法(例如任何注释等)

谢谢!

【问题讨论】:

  • 您只是缺少AllModels 包装器吗?默认情况下,您应该获得具有字段名称的对象数组。
  • 他想避免使用包装类并询问是否存在更好的替代方案
  • 可能是创建一个hashmap

标签: java json spring spring-boot jackson


【解决方案1】:

您可以使用 Spring MVC 中已有的 ResponseEntity 方法。这样的东西对你有用吗?

@GetMapping("/models")
    public ResponseEntity<List<CarModel>> getCars() {
        List<CarModel> carModels = service.methodThatReturnsListOfCarModels();
        return ResponseEntity.ok().body(new HashMap<>(){{put("AllModels", carModels);}});
    }

【讨论】:

  • “AllModels”键将不可用
  • @Panagiwths Mpougioukos 那么我猜你可以在其中创建一个哈希图。我已经相应地更新了灵魂中的代码
  • 这正是我想要的,可以随时随地修改响应正文!
猜你喜欢
  • 2020-02-11
  • 2020-04-14
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
相关资源
最近更新 更多