我正在开发struts中的web服务。现在我想要使用其键值的json对象。然后我必须发布类似数组的回复。我不知道如何在Struts中这样做。我知道如何在Servlets中做到这一点。所以,我正在使用我尝试过的以下代码,但我认为它在Struts中有所不同。
JSONObject json = (JSONObject)new JSONParser().parse(jb.toString());
String key_value= json.get("key").toString();
那么,如何在Struts中完成它。还请告诉我如何解析json数组。
答案 0 :(得分:1)
使用JSON不需要将JSON发送到Struts。即使它可以配置为接受JSON内容类型,它也不会帮助您。你可以使用普通的Struts请求和传入的数据。如果它是一个Ajax调用,那么你可以使用像
这样的东西$.ajax({
url: "<s:url namespace="/aaa" action="bbb"/>",
data : {key: value},
dataType:"json",
success: function(json){
$.each(json, function( index, value ) {
alert( index + ": " + value );
});
}
});
value
应该是通过params
拦截器和OGNL填充的动作属性。成功函数中返回的json
应该是JSON对象,可以直接使用而无需解析。
您需要为属性key
提供操作配置和设置器。
<强> struts.xml
强>
<package name="aaa" namespace="/aaa" extends="json-default">
<action name="bbb" class="com.bbb.Bbb" method="ccc">
<result type="json">
<param name="root">
</result>
</action>
</package>
此配置使用了包"json"
中的"json-default"
结果类型,如果您使用struts2-json-plugin,则可以使用该结果类型。
行动类:
public class Bbb extends ActionSupport {
private String key;
//setter
private List<String> value = new ArrayList<>();
//getter
public String ccc(){
value.add("Something");
return SUCCESS;
}
}
当您返回SUCCESS
结果时,Struts会通过在序列化期间调用其getter方法,将value
参数定义的root
属性序列化为JSON结果。
如果您需要将JSON发送到Struts操作,您应该阅读this回答。