服务器返回 json数据 给 easyui tree

来源:互联网 发布:git源码编译安装 编辑:程序博客网 时间:2024/05/16 11:20

菜单 MenuAction.java

package com.kcsj.action;


import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.json.annotations.JSON;

import com.kcsj.bean.Menu;
import com.kcsj.json.MenuJson;
import com.kcsj.service.IMenuService;
import com.kcsj.tool.HttpJsonUtil;

@Action(value = "menuAction")  //Spring注入,方便前后台调用
public class MenuAction extends BaseAction {
private IMenuService menuService;
        private Menu menu = new Menu();
private String id;

public Menu getMenu() {
return menu;
}


public void setMenu(Menu menu) {
this.menu = menu;
}


public String getId() {
return id;
}


public void setId(String id) {
this.id = id;
}

@JSON(serialize=false) 
public IMenuService getMenuService() {
return menuService;
}


public void setMenuService(IMenuService menuService) {
this.menuService = menuService;
}

        //前台通过menuAction!queryManu() 调用该方法
public void queryMenu() {
List<Menu> menuList = new ArrayList<Menu>();
try {
menu.setMenuId(id);
menuList = menuService.queryMenu(menu);

                         // list转换为json,具体见下
JSONArray jsonArray = MenuJson.ToJsonArray(menuList);  
//自定义类,具体见下
HttpJsonUtil.writeJsonData(response, jsonArray);

                        //异常处理
} catch (Exception e) {
e.printStackTrace();
JSONObject jsonResponse = new JSONObject();
try {
jsonResponse.put("result", "failed");
jsonResponse
.put("message", URLEncoder.encode("操作异常!", "utf-8"));
HttpJsonUtil.writeJsonData(response, jsonResponse);
} catch (Exception e1) {
e1.printStackTrace();
}


}
}


}

json数据转换 

MenuJson.java 

public class MenuJson {
public static JSONArray ToJsonArray(List<Menu> menuList) {
JSONArray jsonArrayIn = new JSONArray();
for (Menu menu : menuList) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", menu.getMenuId());
jsonObject.put("text", menu.getName());
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put("url", menu.getUrl());
jsonObject.put("attributes", attributes);
if(menu.getIsLeaf().equals("0")){
jsonObject.put("state", "closed");
}else{
jsonObject.put("state", "open");
}
jsonArrayIn.put(jsonObject);
}


return jsonArrayIn;
}
}


HttpJsonUtil.java 

        // 将数据返回前台

public static void writeJsonData(HttpServletResponse response,

JSONArray jsonArray) throws Exception  {
response.setCharacterEncoding("UTF-8");  //编码设置,防止乱码
response.getWriter().write(jsonArray.toString());
}


说明: 网上很多通过struts 返回json数据出了很多问题,这种方法的好处就是直接将数据返回前台。省去了struts。