我正在struts上从事Web服务。现在我想要json对象使用其键值。然后,我必须发布类似数组的内容作为响应。我不知道如何在Struts中做到这一点。我知道如何在Servlet中执行此操作。因此,我使用的是我尝试过的以下代码,但我认为Struts中的代码有所不同。
JSONObject json = (JSONObject)new JSONParser().parse(jb.toString()); String key_value= json.get("key").toString();
因此,如何在Struts中做到这一点。还请告诉我如何解析json数组作为响应。
使用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对象,并可以直接使用,无需解析。
value
params
json
您需要为属性提供操作配置和设置器key。
key
struts.xml :
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,则此配置可用。
"json"
"json-default"
动作类:
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结果。
SUCCESS
root