struts2返回json串在jsp页面的处理:
直接上代码了:
action:中
private String JsonString;
public String getJsonString() {
return JsonString;
}
public void setJsonString(String jsonString) {
JsonString = jsonString;
}
下面是方法中的代码:
JSONArray jsonArray = JSONArray.fromObject(list_dir);
this.JsonString = jsonArray.toString();
struts2中的配置:
<package name="test.action" extends="json-default" namespace="/sm">
<action name="scanPointPath" class="smAction" method="scanPointPath" >
<result name="success" type="json">
<param name="includeProperties">JsonString</param>
</result>
</action>
请求时候用的ajax请求,代码如下:
$.ajax( {
type : "POST",
url : "scanPointPath.action",
dataType:"json",
data : {
"postValue":leavePath
},
aysnc : false,
success : function(data) {
alert("dddd"+data); },
error : function() {
alert("cuowu");
}
});
出现的问题:为什么我在前台得到的不是json格式的字符串?在前台弹出的是【object Object】
请问各位大大为什么会出现这个问题?
还有:js中["xxxxxx","yyyyy"] 怎么处理成list集合?
备注:我通过struts返回给jsp的就是类似上面那种json格式的字符串。
------解决方案--------------------
不知道JSON返回到JSP的东西是什么,你可以先判断一下这个【object Object】是什么类型?
success : function(data) {
alert("dddd"+data.constructor);//这里可以输出你返回的json的类型
},
对于js的["xxxxxx","yyyyy"],这个在js里面就是数组。
数组你懂吧?
在js里面可以进行循环:
var arr = ["xxxxxx","yyyyy"];
for(var i = 0, j = arr.length; i<j; i++){
alert(arr[i]);
}
对于Structs2,我一般是这样配置的:
<action name="scanPointPath" class="smAction" method="scanPointPath" >
<!-- 对于返回json 的action,我这里从来不写东西-->
</action>
上面的xml配置我没有写
<result name="success" type="json">
<param name="includeProperties">JsonString</param>
</result>
我会在java的aciton的方法中,采用response得到PrintWriter,然后用它打回json到前台。
------解决方案--------------------
Struts2返回JSON的话,Action的方法不需要返回值
public void loginList(){
DistrictBiz db = new DistrictBizImpl();
List<District> listD =db.getAllDistrict();
//使用JSON工具类打印JSON字符串
JsonWriteUtil.writeJson(resp, listD);
}
------解决方案--------------------
附带工具类
/**
* 把对象转换成JSON后,再进行打印
* @param obj
*/
public static void writeJson(HttpServletResponse response, Object obj) {
String str = JSON.toJSONString(obj);
try {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write(str);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
}
------解决方案--------------------
struts2配置文件里面的package要继承json-default
如
<package name="json" namespace="/" extends="json-default">
------解决方案--------------------
你得把json字符串写出去吧!
------解决方案--------------------
得到的是一个json对象,在前端用方法parseJSON()就可以解析出来,再一层一层的按名字取出来就行了。。。