首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts2如何返回JSON响应

Struts2如何返回JSON响应
EN

Stack Overflow用户
提问于 2013-01-30 15:56:12
回答 4查看 51.1K关注 0票数 14

我目前正在创建一个web应用程序,用户可以从数据库中提取标签作为JSON,

这是我的struts操作

代码语言:javascript
复制
public String execute(){


    Gson gson = new Gson();
    String tagsAsJson = gson.toJson(audioTaggingService.findTagsByName(q));
    System.out.println(tagsAsJson);

    return "success";
}

更新:

tagsAsJson已经是JSON格式了,我只想返回它,而不是整个类操作本身。

它返回如下所示的内容

这是我想要返回给用户的数据

代码语言:javascript
复制
[{"id":2,"name":"Dubstep","description":"Dub wob wob"},{"id":3,"name":"BoysIIMen","description":"A 1990s Boy Band"},{"id":4,"name":"Sylenth1","description":"A VST Plugin for FLStudio "}]

如何将tagsAsJson作为r JSON响应返回?因为客户端代码将使用JSON响应。

EN

回答 4

Stack Overflow用户

发布于 2013-09-03 19:39:52

使用Struts "JSON Plugin"

非常简单,三个步骤:

只需将其包含在maven项目中,如下所示

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>${version.struts2}</version>
</dependency>

将想要返回的字段声明为JSON字符串,就像操作的字段一样,提供getter和setter。

代码语言:javascript
复制
public class Struts2Action extends ActionSupport {

    private String jsonString;

    public String execute() {
        Gson gson = new Gson();
        jsonString = gson.toJson(audioTaggingService.findTagsByName(q));

        return "success";
    }

    public String getJsonString() {
        return jsonString;
    }

    public void setJsonString(String jsonString) {
        this.jsonString = jsonString;
    }
}

最后,将以下代码放入您的XML:

代码语言:javascript
复制
<action name="someJsonAction" class="com.something.Struts2Action">
    <result type="json">
        <param name="noCache">true</param>
        <param name="excludeNullProperties">true</param>
        <param name="root">jsonString</param>
    </result>
</action>

请注意<param name="root">jsonString</param>。这段xml告诉Struts2,这个属性应该被视为JSON序列化的根。因此,只有命名的属性(以及下面的属性,如果它是一个map或其他任何属性)才会在JSON响应中返回。

感谢JSON插件,内容类型将是正确的。

"JSON Plugin“文档在这里:http://struts.apache.org/release/2.3.x/docs/json-plugin.html

票数 24
EN

Stack Overflow用户

发布于 2013-09-03 20:18:33

尝试使用响应的PrintWriter。

Java

代码语言:javascript
复制
    public String execute()
    {
      Gson gson                    = new Gson();
      String jsonString            = gson.toJson(audioTaggingService.findTagsByName(q));
      HttpServletResponse response = ServletActionContext.getResponse();

      response.setContentType("application/json");
      response.getWriter().write(jsonString );

      return null;
   }
票数 17
EN

Stack Overflow用户

发布于 2013-01-30 16:24:17

在Action类中放入下面的代码。

代码语言:javascript
复制
  public class Struts2Action extends ActionSupport
  {     

    public String jsonString="";

    public String execute()
    {
      Gson gson = new Gson();
      jsonString  = gson.toJson(audioTaggingService.findTagsByName(q));
      System.out.println(jsonString);

      return "success";
   }
  }

在JSP中放入下面的代码

代码语言:javascript
复制
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>Struts Rais</title>

<s:property value="jsonString"/><br />

这将打印JSON数据,如果您想操作JSON数据,则在var <s:set>标记中对数据进行分类,并在整个页面中访问变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14599073

复制
相关文章

相似问题

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