小编典典

如何在Struts中使用键值获取json对象?

json

我正在struts上从事Web服务。现在我想要json对象使用其键值。然后,我必须发布类似数组的内容作为响应。我不知道如何在Struts中做到这一点。我知道如何在Servlet中执行此操作。因此,我使用的是我尝试过的以下代码,但我认为Struts中的代码有所不同。

JSONObject json = (JSONObject)new JSONParser().parse(jb.toString());
                      String key_value= json.get("key").toString();

因此,如何在Struts中做到这一点。还请告诉我如何解析json数组作为响应。


阅读 261

收藏
2020-07-27

共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结果。

2020-07-27