Spring MVC - How to return simple String as JSON in Rest Controller Spring MVC - How to return simple String as JSON in Rest Controller java java

Spring MVC - How to return simple String as JSON in Rest Controller


Either return text/plain (as in Return only string message from Spring MVC 3 Controller) OR wrap your String is some object

public class StringResponse {    private String response;    public StringResponse(String s) {        this.response = s;    }    // get/set omitted...}


Set your response type to MediaType.APPLICATION_JSON_VALUE (= "application/json")

@RequestMapping(value = "/getString", method = RequestMethod.GET,                produces = MediaType.APPLICATION_JSON_VALUE)

and you'll have a JSON that looks like

{  "response" : "your string value" }


JSON is essentially a String in PHP or JAVA context. That means string which is valid JSON can be returned in response. Following should work.

  @RequestMapping(value="/user/addUser", method=RequestMethod.POST)  @ResponseBody  public String addUser(@ModelAttribute("user") User user) {    if (user != null) {      logger.info("Inside addIssuer, adding: " + user.toString());    } else {      logger.info("Inside addIssuer...");    }    users.put(user.getUsername(), user);    return "{\"success\":1}";  }

This is okay for simple string response. But for complex JSON response you should use wrapper class as described by Shaun.


In one project we addressed this using JSONObject (maven dependency info). We chose this because we preferred returning a simple String rather than a wrapper object. An internal helper class could easily be used instead if you don't want to add a new dependency.

Example Usage:

@RestControllerpublic class TestController{    @RequestMapping("/getString")    public String getString()    {        return JSONObject.quote("Hello World");    }}