struts2中的json格式数据怎么传到页面 js怎么获取得到

JavaScript09

struts2中的json格式数据怎么传到页面 js怎么获取得到,第1张

struts2中的json格式数据传到页面的方法:

思路:后台action要把传递到页面的属性封装到map中,然后封装好的数据将会被Struts2转换成JSON字符串。

1、action层的代码:

public class JsonAction extends ActionSupport{

private static final long serialVersionUID = 1L

private Map<String,Object>dataMap

private String key = "Just see see"

public String json() {

// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据

dataMap = new HashMap<String, Object>()

User user = new User()

user.setName("张三")

user.setPassword("123")

dataMap.put("user", user)

// 放入一个是否操作成功的标识

dataMap.put("success", true)

// 返回结果

return SUCCESS

}

public Map<String, Object>getDataMap() {

return dataMap

}

//设置key属性不作为json的内容返回

@JSON(serialize=false)

public String getKey() {

return key

}

}

2、配置aciton,在struts.xml中的写法如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<package name="json" extends="struts-default,json-default" >

<action name="json" class="json.JsonAction" method="json">

<result type="json">

<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->

<param name="root">dataMap</param>

</result>

</action>

</package>

</struts>

3、最终的输出结果:

{"success":true,"user":{"name":"张三","password":"123"}}

4、用js来解析:使用现成的JSON.parse() 来解析即可。

JSON.parse() 方法可以将一个 JSON 字符串解析成为一个 JavaScript 值。

jsp中利用ajax传递的参数统一用request.getParameter('xxx')来获取参数

如果是一个json数组,那么解析对象的时候用JSONArray接收就可以了。

/**

* 从json数组中得到相应java数组

* JSONArray下的toArray()方法的使用

* @param str

* @return

*/

public static Object[] getJsonToArray(String str) {

JSONArray jsonArray = JSONArray.fromObject(str)

return jsonArray.toArray()

}

public static void main(String[] args) {

JSONArray jsonStrs = new JSONArray()

jsonStrs.add(0, "cat")

jsonStrs.add(1, "dog")

jsonStrs.add(2, "bird")

jsonStrs.add(3, "duck")

Object[] obj=getJsonToArray(jsonStrs.toString())

for(int i=0i<obj.lengthi++){

System.out.println(obj[i])

}

}