我目前正在创建一个网络应用程序,用户可以在其中以 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