Spring Boot控制器不新建类如何动态返回指定结构的JSON响应
解决方案
你可以通过以下几种不需要额外创建响应类的方式实现:
方式1:使用Map(最通用,无额外依赖)
Java 9及以上版本可以直接用Map.of快速创建不可变Map:
@GetMapping("/test") public ResponseEntity<?> getLanguageList() { return ResponseEntity.ok(Map.of( "status", "OK", "info", "Hello" )); }
Java 8版本写法:
@GetMapping("/test") public ResponseEntity<?> getLanguageList() { Map<String, Object> res = new HashMap<>(); res.put("status", "OK"); res.put("info", "Hello"); return ResponseEntity.ok(res); }
Spring 自带的 Jackson 序列化工具会自动将 Map 转为你需要的 JSON 格式。
方式2:使用Jackson的ObjectNode(动态字段场景更灵活)
直接用Spring内置的Jackson对象节点构造,适合需要动态增减字段的场景:
// 先注入ObjectMapper,或者直接new一个也可以 @Autowired private ObjectMapper objectMapper; @GetMapping("/test") public ResponseEntity<?> getLanguageList() { ObjectNode res = objectMapper.createObjectNode(); res.put("status", "OK"); res.put("info", "Hello"); return ResponseEntity.ok(res); }
方式3:使用第三方JSON库的JSONObject(需引入对应依赖)
比如用FastJSON的话,写法如下:
@GetMapping("/test") public ResponseEntity<?> getLanguageList() { JSONObject res = new JSONObject(); res.put("status", "OK"); res.put("info", "Hello"); return ResponseEntity.ok(res); }
注意:该方式需要提前引入FastJSON等对应JSON库的依赖,同时要配置好对应的消息转换器确保序列化正常。
内容的提问来源于stack exchange,提问作者mrwhiteblue
相关产品推荐
相关产品推荐

