Json 自定義使用函數(shù)的簡單實例
更新時間:2016年10月28日 08:55:35 投稿:jingxian
下面小編就為大家?guī)硪黄狫son 自定義使用函數(shù)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
如下所示:
/*
* Created on Nov 4, 2016
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.suning.commerce.util;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
/**
* @author nicholas tse
*
* TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
*/
public class JsonUtils {
/**
*
* @param array
* @return
*/
private static String array2Json(Object[] array) {
if (array.length == 0)
return "[]";
int i = array.length;
StringBuffer sb = new StringBuffer(i << 4);
sb.append('[');
for (int j = 0; j < i; j++) {
Object o = array[j];
sb.append(toJson(o));
sb.append(',');
}
// 將最后添加的 ',' 變?yōu)?']':
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
}
private static String string2Json(String s) {
StringBuffer sb = new StringBuffer(s.length() + 20);
sb.append('\"');
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
sb.append('\"');
return sb.toString();
}
public static String toJson(Object o) {
if (o == null) {
return "null";
} else if (o instanceof String) {
return string2Json((String) o);
} else if ((o instanceof Boolean) || (o instanceof Number)) {
return o.toString();
} else if ((o instanceof Date) || (o instanceof Time)||o instanceof Timestamp) {
return o.toString();
} else if (o instanceof java.util.Date) {
return DateUtil.formatDate((java.util.Date)o,"yyyy-MM-dd HH:mm:ss");
} else if (o instanceof Map) {
return map2Json((Map) o);
} else if (o instanceof Object[]) {
return array2Json((Object[]) o);
} else if (o instanceof Collection) {
return array2Json(((Collection) o).toArray());
} else {
try {
Map describe = BeanUtils.describe(o);
return map2Json(describe);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
throw new RuntimeException("Unsupported type: " + o.getClass().getName());
}
/**
*
* @param map
* @return
*/
private static String map2Json(Map map) {
if (map.isEmpty())
return "{}";
StringBuffer sb = new StringBuffer(map.size() << 4);
sb.append('{');
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
Object value = map.get(key);
sb.append('\"');
sb.append(key);
sb.append('\"');
sb.append(':');
sb.append(toJson(value));
sb.append(',');
}
// 將最后的 ',' 變?yōu)?'}':
sb.setCharAt(sb.length() - 1, '}');
return sb.toString();
}
}
以上就是小編為大家?guī)淼腏son 自定義使用函數(shù)的簡單實例全部內容了,希望大家多多支持腳本之家~
相關文章
SpringBoot多數(shù)據(jù)庫連接(mysql+oracle)的實現(xiàn)
這篇文章主要介紹了SpringBoot多數(shù)據(jù)庫連接(mysql+oracle)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
java:程序包org.apache.ibatis.annotations不存在報錯解決
這篇文章主要給大家介紹了關于java:程序包org.apache.ibatis.annotations不存在報錯的解決方法,這個錯誤是我在直接導入springboot項目的時候報錯的,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04
java file.renameTo返回false的原因及解決方案
這篇文章主要介紹了java file.renameTo返回false的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07

