我目前正在创建一个 Web 应用程序,用户可以在其中以 JSON 形式从数据库获取标签,
这是我的 struts 动作
public String execute(){
Gson gson = new Gson();
String tagsAsJson = gson.toJson(audioTaggingService.findTagsByName(q));
System.out.println(tagsAsJson);
return "success";
}
UPDATE:
The 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
作为 JSON 响应?因为客户端代码将使用该 JSON 响应。
使用Struts“JSON 插件” http://struts.apache.org/release/2.3.x/docs/json-plugin.html.
很简单,三步:
只需将其包含在您的 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 序列化的根。因此,只有指定的属性(以及下面的属性,如果它是地图或其他属性)将在 JSON 响应中返回。
感谢 JSON 插件,内容类型将是正确的。
“JSON 插件”文档在这里:http://struts.apache.org/release/2.3.x/docs/json-plugin.html http://struts.apache.org/release/2.3.x/docs/json-plugin.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)