【问题标题】:How to get json object using its key value in Struts?如何使用 Struts 中的键值获取 json 对象?
【发布时间】:2015-01-24 07:57:11
【问题描述】:

我正在使用 struts 开发 Web 服务。现在我想要 json 对象使用它的键值。然后我必须发布类似数组的东西作为回应。我不知道如何在 Struts 中做到这一点。我知道如何在 Servlets 中做到这一点。所以,我正在使用我尝试过的以下代码,但我认为它在 Struts 中有所不同。

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

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

【问题讨论】:

标签: java jquery json struts2 struts


【解决方案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 填充的操作属性。 success函数中返回的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-default" 中的"json" 结果类型,如果您使用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 答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 2014-07-12
    相关资源
    最近更新 更多