首页 > 解决方案 > 从 Spring Boot RestController 返回一个内部 json 字符串

问题描述

我有一个 Spring Boot RestController,它应该返回一个 json(按原样存储在 DB 列中,并检索到 String 对象中)。我把它分解成几个片段

@RestController
public class MyController {
 ..... 
    @RequestMapping(value = "/restAPI/v2/get/mytest",...produces = MediaType.APPLICATION_JSON_VALUE)
    public RespBean fetchList(HttpServletRequest httpRequest,..) {
     ...
     String abc = userData.getJson(); //Json string
     System.out.print(abc); // gives {"name":"test", "desc": "My desc" }
     respBean.setData(abc)
     return respBean;
  }

}

RespBean 是


public class RespBean {
    private String httpStatus, appCode;
    private Object data;
    //getters, setters ...
}

现在的问题是,当我检查 PostMan 中的响应时,我得到了一个 json 转义字符串作为数据字段,而不是一个 json 'object',比如

{
    "httpStatus": "200",
    "appCode": "21",
    "data": "{\"name\":\"test\", \"desc\": \"My desc\" }"
}

我可以告诉 RestController 不要转义 RespBean 中的数据字段,并将其作为 json 对象返回吗?有替代解决方案吗?我试图不改变 RespBean 的结构(它在很多地方使用)并保持状态/代码/数据结构。

谢谢你进来看看。

标签: jsonspring-boot

解决方案


你可以使用@JsonRawValue

public class RespBean {
    private String httpStatus, appCode;
    @JsonRawValue
    private Object data;
    //getters, setters ...
}

推荐阅读