首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring MVC -如何在Rest控制器中将简单字符串作为JSON返回

Spring MVC -如何在Rest控制器中将简单字符串作为JSON返回
EN

Stack Overflow用户
提问于 2015-06-17 22:58:38
回答 10查看 430.5K关注 0票数 162

我的问题本质上是this问题的后续。

@RestController
public class TestController
{
    @RequestMapping("/getString")
    public String getString()
    {
        return "Hello World";
    }
}

在上面的代码中,Spring会在响应正文中添加"Hello World“。如何将字符串作为JSON响应返回?我知道我可以添加引号,但这感觉更像是黑客。

请提供任何示例来帮助解释此概念。

注意:我不希望将此内容直接写入HTTP响应正文,我希望返回JSON格式的字符串(我将我的控制器与RestyGWT一起使用,它要求响应采用有效的JSON格式)。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2015-06-17 23:07:35

要么返回text/plain (就像在Return only string message from Spring MVC 3 Controller中一样),要么将字符串包装为某个对象

public class StringResponse {

    private String response;

    public StringResponse(String s) { 
       this.response = s;
    }

    // get/set omitted...
}

将响应类型设置为MediaType.APPLICATION_JSON_VALUE (= "application/json")

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

您将拥有一个如下所示的JSON

{  "response" : "your string value" }
票数 188
EN

Stack Overflow用户

发布于 2015-10-27 01:51:55

JSON本质上是PHP或JAVA上下文中的字符串。这意味着可以在响应中返回有效的JSON字符串。下面的内容应该可以。

  @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}";
  }

这对于简单的字符串响应是可以的。但是对于复杂的JSON响应,您应该使用Shaun描述的包装器类。

票数 63
EN

Stack Overflow用户

发布于 2016-06-15 02:31:05

在一个项目中,我们使用JSONObject (maven dependency info)解决了这个问题。我们之所以选择这个,是因为我们更喜欢返回一个简单的字符串,而不是包装器对象。如果您不想添加新的依赖项,那么可以很容易地使用内部帮助器类。

示例用法:

@RestController
public class TestController
{
    @RequestMapping("/getString")
    public String getString()
    {
        return JSONObject.quote("Hello World");
    }
}
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30895286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档