java - Struts2 如何返回 JSON 响应

标签 java json struts2 action gson

<分区>

我目前正在创建一个网络应用程序,用户可以在其中以 JSON 格式从数据库中获取标签,

这是我的struts Action

public String execute(){


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

    return "success";
}

更新:

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

它返回这样的东西

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

[{"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 响应将由客户端代码使用。

最佳答案

使用 Struts "JSON Plugin" .

很简单,三步:

像这样将它包含在你的maven项目中

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>${version.struts2}</version>
</dependency>

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

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 中:

<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 插件”文档在这里:http://struts.apache.org/release/2.3.x/docs/json-plugin.html

关于java - Struts2 如何返回 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14599073/

相关文章:

c# - 将 URI 参数映射到参数对象的属性?

php - 来自 php 的 Google Table Chart 创建了 Json

java - 使用 Jackson 的 ObjectMapper 解析具有动态类型(字符串或对象)的值的 JSON

java - 从外部 jsp 页面显示对话框(Struts2、java)

java - 如何读取类中的全局属性文件?

javascript - IE错误类型错误: Unable to get value of the property 'set' : object is null or undefined

java模拟自定义对象

java - HashMap<Integer, String> 存储 String[] (Atlassian Confluence)

java - 如何重置我的 JButton?

java - 在 ItemReader/Processor/Writer 中访问 StepExecution/JobExecution 的最佳方式