You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过少量注解或代码修改将返回XML的Controller改为返回JSON

实现Spring接口从XML转JSON返回的最小代码修改方案

一、修改Controller的响应格式指定

仅需把@GetMapping注解里的produces属性值从XML类型替换为JSON类型:

修改后的Controller代码:

@GetMapping(value = "/check", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<Result> getWapiResult(@RequestParam String sn){
    return new ResponseEntity(
            wapiService.getWapiData(sn).getBody(),
            new HttpHeaders(),
            HttpStatus.OK);
}

二、实体类添加JSON序列化支持

原实体类字段均为私有且无getter方法,Jackson默认无法序列化这些私有字段,添加一行Jackson注解即可解决,同时保留原有XML注解(二者不冲突):

修改后的Result实体类:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) // 允许Jackson直接访问私有字段
public class Result {
    
    private boolean complete;
    private int srcsize;
    
    private String urlpath;
}

如果项目已引入Lombok,也可以用@Data注解替代上述Jackson注解,它会自动生成getter/setter等方法,代码更简洁:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class Result {
    
    private boolean complete;
    private int srcsize;
    
    private String urlpath;
}

额外说明

  • Spring Boot的web starter默认包含Jackson依赖,无需额外引入;传统Spring项目需手动添加jackson-databind依赖。
  • 若想让接口同时支持XML和JSON返回,可将produces设为{MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE},客户端通过Accept请求头指定所需格式即可。

内容的提问来源于stack exchange,提问作者Mohit H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:42:55