如何在 Spring 引导响应中获得没有转义字符的 JSON?
How to get a JSON without escape characters in Spring Boot Response?
根据我的要求,我必须像这样在我的服务 class 中将此 JSON 硬编码为字符串。
String sample = " {\"menu\": {\n" +
" \"id\": \"file\",\n" +
" \"value\": \"File\",\n" +
" \"popup\": {\n" +
" \"menuitem\": [\n" +
" {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},\n" +
" {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},\n" +
" {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}\n" +
" ]\n" +
" }\n" +
"}}";
所以我有一个控制器,其中必须给出这个 JSON 作为响应。
@RequestMapping(value = '''')
public Response rechargeRequestResponseMatcher(HttpServletRequest request) throws IOException {
try{
JSONObject jsonObj = new JSONObject(sample);
String jsonString = jsonObj.toString();
response.setResponseBody(jsonString );
}
}catch (Exception e){
:
}
如果我使用带有转义符的邮递员 ResponseBody 来调用它。像这样。
为什么会这样以及如何只获得 JSON 而不是这样。
谢谢,
如果您使用 spring 启动,您应该将您的控制器设为 RestController,或者如果您不希望整个控制器成为 RestController,您可以注释具体方法为@ResponseBody。如果您仍然不想要这两个中的任何一个,请尝试这样做,
please note that I am using HttpServletResponse responses for this example
response.setResponseBody(sample ); //add the string directly
response.setStatus(200); //set status explicitly
我希望这会起作用,否则使用 Spring 引导的实际美感,并使您的控制器成为 RestController
以上建议无效,您可以再试一次:
- 重新设计您的回复 class 类似于您的回复示例
此处显示
将您的 json 对象反序列化为该响应 class
return即class。
希望有用:
示例:
public class 回应{
private String status;
private String message;
private ResponseBody responseBody;
//standard setters getters
}
public class ResponseBody{
private Menu menu;
//setters getters
}
public class Menu{
private String id;
private String value;
private Popup popup;
//setters getters
}
public class Popup{
private List<Menuitem>menuitem;
//setters getters
}
public class Menuitem{
private String value;
private String onclick;
//setters getters
}
根据我的要求,我必须像这样在我的服务 class 中将此 JSON 硬编码为字符串。
String sample = " {\"menu\": {\n" +
" \"id\": \"file\",\n" +
" \"value\": \"File\",\n" +
" \"popup\": {\n" +
" \"menuitem\": [\n" +
" {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},\n" +
" {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},\n" +
" {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}\n" +
" ]\n" +
" }\n" +
"}}";
所以我有一个控制器,其中必须给出这个 JSON 作为响应。
@RequestMapping(value = '''')
public Response rechargeRequestResponseMatcher(HttpServletRequest request) throws IOException {
try{
JSONObject jsonObj = new JSONObject(sample);
String jsonString = jsonObj.toString();
response.setResponseBody(jsonString );
}
}catch (Exception e){
:
}
如果我使用带有转义符的邮递员 ResponseBody 来调用它。像这样。
为什么会这样以及如何只获得 JSON 而不是这样。
谢谢,
如果您使用 spring 启动,您应该将您的控制器设为 RestController,或者如果您不希望整个控制器成为 RestController,您可以注释具体方法为@ResponseBody。如果您仍然不想要这两个中的任何一个,请尝试这样做,
please note that I am using HttpServletResponse responses for this example
response.setResponseBody(sample ); //add the string directly
response.setStatus(200); //set status explicitly
我希望这会起作用,否则使用 Spring 引导的实际美感,并使您的控制器成为 RestController
以上建议无效,您可以再试一次:
- 重新设计您的回复 class 类似于您的回复示例 此处显示
将您的 json 对象反序列化为该响应 class
return即class。 希望有用:
示例:public class 回应{
private String status; private String message; private ResponseBody responseBody; //standard setters getters } public class ResponseBody{ private Menu menu; //setters getters } public class Menu{ private String id; private String value; private Popup popup; //setters getters } public class Popup{ private List<Menuitem>menuitem; //setters getters } public class Menuitem{ private String value; private String onclick; //setters getters }