Json 自定義使用函數(shù)的簡(jiǎn)單實(shí)例
如下所示:
/* * 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ī)?lái)的Json 自定義使用函數(shù)的簡(jiǎn)單實(shí)例全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
spring boot項(xiàng)目快速構(gòu)建的全步驟
這篇文章主要給大家介紹了關(guān)于spring boot項(xiàng)目快速構(gòu)建的全步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09詳解如何使用Spring的@FeignClient注解實(shí)現(xiàn)通信功能
SpringBoot是一個(gè)非常流行的Java框架,它提供了一系列工具來(lái)使這種交互無(wú)縫且高效,在這些工具中,@FeignClient注解因其易用性和強(qiáng)大的功能而脫穎而出, 在這篇文章中,我們將探討如何使用Spring的@FeignClient注解進(jìn)行客戶端-服務(wù)器通信,需要的朋友可以參考下2023-11-11Spring Cache的基本使用與實(shí)現(xiàn)原理詳解
緩存是實(shí)際工作中非經(jīng)常常使用的一種提高性能的方法, 我們會(huì)在很多場(chǎng)景下來(lái)使用緩存。下面這篇文章主要給大家介紹了關(guān)于Spring Cache的基本使用與實(shí)現(xiàn)原理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05Java設(shè)計(jì)模式之組合模式(Composite模式)介紹
這篇文章主要介紹了Java設(shè)計(jì)模式之組合模式(Composite模式)介紹,Composite定義:將對(duì)象以樹形結(jié)構(gòu)組織起來(lái),以達(dá)成“部分-整體” 的層次結(jié)構(gòu),使得客戶端對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性,需要的朋友可以參考下2015-03-03Java中的SynchronousQueue隊(duì)列詳解
這篇文章主要介紹了Java中的SynchronousQueue隊(duì)列詳解,SynchronousQueue是BlockingQueue的一種,所以SynchronousQueue是線程安全的,SynchronousQueue和其他的BlockingQueue不同的是SynchronousQueue的capacity是0,需要的朋友可以參考下2023-12-12解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11