日期:2014-05-16 浏览次数:20454 次
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
/**
* Json串处理工具类
* json,list,map等之间的各种转化
* @author
* @version 2.0 create at,2009-2-12
*
*/
public class JsonUtil {
/**
* 将json格式的字符串转化为jsonobject
* @param str
* @return
* @throws ApplicationException
*/
public static JSONObject stringToJsonObject(String str) throws ApplicationException {
JSONObject jsonObject = null;
if (Validator.isNotNull(str)) {
try{
jsonObject = JSONObject.fromObject(str);
}catch(Exception ex){
throw new ApplicationException("要转化的字符串格式不对,必须为json格式!");
}
}
return jsonObject;
}
/**
* 从指定的List<map>对象中获取要设置的值后组装成返回给前台的JSON对象字符串.
* 主要用于给前台分页grid组装数据
* @param list list<map>从数据库中查询出来的数据
* @param count 总数
* @return
*/
@SuppressWarnings("unchecked")
public static String fromMap(List list, int count) {
//将list<map>转化为jsonarray
JSONArray options = formListArray(list);
JSONObject result = new JSONObject();
result.put("result", options);
result.put("totalCount", count);
return result.toString();
}
/**
* 将Map<String,String>转化为JSONObject格式的字符串
* @param map
* @return {"success":true,"result":{}}
*/
public static String fromMapToJson(Map<String, String> map) {
Iterator<String> it = map.keySet().iterator();
JSONObject jsonObject = new JSONObject();
JSONObject json = new JSONObject();
while (it.hasNext()) {
String key = (String) it.next();
jsonObject.put(key.toLowerCase(), map.get(key));
}
json.put("success", true);
json.put("result", jsonObject.toString());
return json.toString();
}
/**
* 将list<map>转化为jsonobject格式的字符串
* @param list
* @return {"result":{...}}
*/
@SuppressWarnings("unchecked")
public static String fromListMap(List list) {
JSONArray options = new JSONArray();
for (Object obj : list) {
Iterator it = ((Map) obj).keySet().iterator();
Object value;
JSONObject option = new JSONObject();
while (it.hasNext()) {
String key = (String) it.next();
value = ((Map) obj).get(key);
value = value != null ? value : "";
option.put(key.toLowerCase(), value);
}
options.add(option);
}
JSONObject result = new JSONObject();
result.put("result", options.toString());
return result.toString();
}
/**
* 从list<map>转化为treenode的json
* @param list
* @return
*/
@SuppressWarnings("unchecked")
public static String toAsynTreeJson(List list) {
JSONArray ja = new JSONArray();
for (Object obj : list) {
Iterator it = ((Map) obj).keySet().iterator();
JSONObject option = new JSONObject();
while (it.hasNext()) {
String key = (String) it.next();
Object value = ((Map) obj).get(key);
key = key.toLowerCase();
value = value == null ? "" : value.toString();
//是否含有带checkbox的treenode
if (key.equals("checked")) {
boolean check = value.equals("1") ? true : false;
option.put("checked", check);
}
//是为叶子节点还是为非叶子节点
else if("leaf".equals(key)){
boolean leaf = value.toString().trim().equals("1")?true:false;
option.put("leaf", leaf);
}else if("draggable".equals(key)){
boolean draggable = value.toString().trim().equals("1")?true:false;
option.put("draggable", draggable);
}
else
option.put(key, value);
}
ja.add(option);
}
return ja.toString();
}
/**
* 将list<map>转化为jsonarray
* 此JSONArray的格式将会是这样[{},{}]
* @param list
* @return
*/
@SuppressWarnings("unchecked")
public static JSONArray formListArray(List list) {
JSONArray options = new JSONArray();
for (Object obj : list) {
Iterator it = ((Map) obj).keySet().iterator();
JSONObject option = new JSONObject();
while (it.hasNext()) {
String key = (String) it.next();
Object value = ((Map) obj).get(