相关文章
1. Java 解析JSONJSON-LIB jar包下载和使用。
2. JSON格式讲解JSON获取对象,JSONObject和JSONArray的操作
3. Java Cookie 操作工具
4. JSON.stringify 函数 (JavaScript)讲解
5. Java 完美解析.plist & 生成plist ,Android 解析.plist
6. GZIP压缩JSONJSON压缩
7. cpu资源采集.json
8. SQL Server 对JSON的支持
9. JQuery Ajax四种写法,Ajax请求返回JSON 操作Demo
10. JSON压缩算法 JSON.hpack ,JSON压缩实现
最新文章
1. Nodejs使用“adm-zip”对zip文件解压的时候,出现中文名文件名乱码解决方案 28
2. 当我谈 HTTP 时,我谈些什么? 13
3. 新浪短链(t.cn)最新申请官方API的方法讲解。 7
4. QUIC / HTTP3 协议详细分析讲解 4
5. 恭喜那个做云存储的七牛云完成 F 轮 10 亿人民币的融资,开启新的云旅程 2046
6. Autojs怎么安全加密?Autojs在线加密工具注意事项。 3013
7. Java JSON 组件选型之 FastJson 为什么总有漏洞? 10
8. 使用七牛云存储实现图片API,自动删除图片方案合集 8
9. 神速ICP备案经验分享,ICP备案居然一天就通过了 3981
10. 百度加强推送URL链接,百度SEO强行推送链接JavaScript代码案例讲解。 4188
最热文章
1. 苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 469056
2. 我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 434882
3. 免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 365890
4. 免费天气API,天气JSON API,不限次数获取十五天的天气预报 324676
5. Elasticsearch教程(四) elasticsearch head 插件安装和使用 240939
6. Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 205838
7. 谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 148336
8. Elasticsearch教程(一),全程直播(小白级别) 128367
9. Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 107109
10. Elasticsearch教程(五) elasticsearch Mapping的创建 103816

json 解析与生成工具类 ,JSON操作讲解(附件)

JSON 2016-08-22 18:29:43 9125

package Sojson;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
  
/**
 * 
 * 开发公司:itboy.net<br/>
 * 版权:itboy.net<br/>
 * <p>
 * 
 * JSON工具类
 * 
 * <p>
 * 
 * 区分 责任人 日期    说明<br/>
 * 创建 周柏成 2015年12月25日  <br/>
 * <p>
 * *******
 * <p>
 * @author zhou-baicheng
 * @email  i@itboy.net
 * @version 1.0,2015年12月25日 <br/>
 * 
 */
public class JSONUtils {  
    /** 
     * 格式化日期 
     */  
    private static final SimpleDateFormat FMT = new SimpleDateFormat(  
            "yyyy-MM-dd");  
    private Map<String, Object> jsonMap = new HashMap<String, Object>();  
  
    /** 
     * 清理map 
     * @author zhou-baicheng 
     */  
    public void clear() {  
        jsonMap.clear();  
    }  
  
    /** 
     * 添加元素 <br/> 
     * @author zhou-baicheng 
     * @param key 键 
     * @param value 值 
     * @return Map 
     */  
    public Map<String, Object> put(String key, Object value) {  
        jsonMap.put(key, value);  
        return jsonMap;  
    }  
  
    /** 
     * 判断是否要加引号 
     * return (value instanceof Integer || value instanceof Boolean 
     * || value instanceof Double || value instanceof Float 
     * || value instanceof Short || value instanceof Long || value 
     * instanceof Byte); 
     * @author zhou-baicheng 
     * @param value 
     * @return boolean 
     */  
    private static boolean isNoQuote(Object value) {  
        if (value instanceof Integer) {  
            return true;  
        } else if (value instanceof Boolean) {  
            return true;  
        } else if (value instanceof Double) {  
            return true;  
        } else if (value instanceof Float) {  
            return true;  
        } else if (value instanceof Short) {  
            return true;  
        } else if (value instanceof Long) {  
            return true;  
        } else if (value instanceof Byte) {  
            return true;  
        } else {  
            return false;  
        }  
    }  
  
    /** 
     * 判断是否要加引号 
     * @author zhou-baicheng 
     * @param value 
     * @return boolean 
     */  
    private static boolean isQuote(Object value) {  
        if (value instanceof String) {  
            return true;  
        } else if (value instanceof Character) {  
            return true;  
        } else {  
            return false;  
        }  
  
    }  
  
    /** 
     * 返回形如{'apple':'red','lemon':'yellow'}的字符串 
     * @author zhou-baicheng 
     * @return String 
     * @see java.lang.Object#toString() 
     */  
    @SuppressWarnings("unchecked")  
    @Override  
    public String toString() {  
        StringBuffer sb = new StringBuffer();  
        sb.append("{");  
        Set<Entry<String, Object>> set = jsonMap.entrySet();  
        for (Entry<String, Object> entry : set) {  
            Object value = entry.getValue();  
            if (value == null) {  
                continue;// 对于null值,不进行处理,页面上的js取不到值时也是null  
            }  
            sb.append("'").append(entry.getKey()).append("':");  
            if (value instanceof JSONUtils) {  
                sb.append(value.toString());  
            } else if (isNoQuote(value)) {  
                sb.append(value);  
            } else if (value instanceof Date) {  
                sb.append("'").append(FMT.format(value)).append("'");  
            } else if (isQuote(value)) {  
                sb.append("'").append(value).append("'");  
            } else if (value.getClass().isArray()) {  
                sb.append(arrayToStr(value));  
            } else if (value instanceof Map) {  
                sb.append(fromObject((Map<String, Object>) value).toString());  
            } else if (value instanceof List) {  
                sb.append(listToStr((List<Object>) value));  
            } else {  
                sb.append(fromObject(value).toString());  
            }  
            sb.append(",");  
        }  
        int len = sb.length();  
        if (len > 1) {  
            sb.delete(len - 1, len);  
        }  
        sb.append("}");  
        return sb.toString();  
    }  
  
    /** 
     * 数组拼接 
     * @author zhou-baicheng 
     * @param array 数组 
     * @return String 
     */  
    public static String arrayToStr(Object array) {  
        if (!array.getClass().isArray()) {  
            return "[]";  
        }  
        StringBuffer sb = new StringBuffer();  
        sb.append("[");  
        int len = Array.getLength(array);  
        Object v = null;  
        for (int i = 0; i < len; i++) {  
            v = Array.get(array, i);  
            if (v instanceof Date) {  
                sb.append("'").append(FMT.format(v)).append("'").append(",");  
            } else if (isQuote(v)) {  
                sb.append("'").append(v).append("'").append(",");  
            } else if (isNoQuote(v)) {  
                sb.append(i).append(",");  
            } else {  
                sb.append(fromObject(v)).append(",");  
            }  
        }  
        len = sb.length();  
        if (len > 1) {  
            sb.delete(len - 1, len);  
        }  
        sb.append("]");  
        return sb.toString();  
    }  
  
    /** 
     * list 集合 生成 
     * @author zhou-baicheng 
     * @param list 集合 
     * @return String 
     */  
    @SuppressWarnings("unchecked")  
    public static String listToStr(List<Object> list) {  
        if (list == null) {  
            return null;  
        }  
        StringBuffer sb = new StringBuffer();  
        sb.append("[");  
        Object value = null;  
        for (java.util.Iterator<Object> it = list.iterator(); it.hasNext();) {  
            value = it.next();  
            if (value instanceof Map) {  
                sb.append(fromObject((Map) value).toString()).append(",");  
            } else if (isNoQuote(value)) {  
                sb.append(value).append(",");  
            } else if (isQuote(value)) {  
                sb.append("'").append(value).append("'").append(",");  
            } else {  
                sb.append(fromObject(value).toString()).append(",");  
            }  
        }  
        int len = sb.length();  
        if (len > 1) {  
            sb.delete(len - 1, len);  
        }  
        sb.append("]");  
        return sb.toString();  
    }  
  
    /** 
     * 从一个bean装载数据,返回一个JsonUtil对象。 <br/> 
     * @author zhou-baicheng 
     * @param bean 实体 
     * @return JSONUtils 
     */  
    @SuppressWarnings("unchecked")  
    public static JSONUtils fromObject(Object bean) {  
        JSONUtils json = new JSONUtils();  
        if (bean == null) {  
            return json;  
        }  
        Class cls = bean.getClass();  
        Field[] fs = cls.getDeclaredFields();  
        Object value = null;  
        String fieldName = null;  
        Method method = null;  
        int len = fs.length;  
        for (int i = 0; i < len; i++) {  
            fieldName = fs[i].getName();  
            try {  
                method = cls.getMethod(getGetter(fieldName), (Class[]) null);  
                value = method.invoke(bean, (Object[]) null);  
            } catch (Exception e) {  
                e.printStackTrace();  
                continue;  
            }  
            json.put(fieldName, value);  
        }  
        return json;  
    }  
  
    /** 
     * 从Map中装载数据 <br/> 
     * @author zhou-baicheng 
     * @param map map 
     * @return JSONUtils 
     */  
    public static JSONUtils fromObject(Map<String, Object> map) {  
        JSONUtils json = new JSONUtils();  
        if (map == null) {  
            return json;  
        }  
        json.getMap().putAll(map);  
        return json;  
    }  
  
    private static String getGetter(String property) {  
        return "get" + property.substring(0, 1).toUpperCase()  
                + property.substring(1, property.length());  
    }  
  
    public Map<String, Object> getMap() {  
        return this.jsonMap;  
    }  
  
    /** 
     * 此处为方法说明 
     * @author zhou-baicheng 
     * @param args aa 
     */  
    public static void main(String[] args) { 
        Map<String,Object> map1 = new HashMap<String,Object>(); 
        map1.put("name", "张三"); 
        map1.put("age", 2); 
        Map<String,Object> map2 = new HashMap<String,Object>(); 
        map2.put("name", "张三"); 
        map2.put("age", 22); 
        List<Map<String,Object>> list = new LinkedList<Map<String,Object>>(); 
        list.add(map1); 
        list.add(map2); 
        List<Integer> li = new LinkedList<Integer>(); 
        li.add(1); 
        li.add(1); 
        li.add(1); 
        System.out.println(JSONUtils.fromObject(map1)); 
        JSONUtils util = new JSONUtils(); 
        util.put("name", "张三"); 
        util.put("blog", "https://www.jsonla.com/blog/"); 
        util.put("ttt", true); 
        util.put("dd", 1.3d); 
        util.put("ff", 1.3f); 
        util.put("date", new java.util.Date()); 
        int[] a = new int[] { 2, 3, 4, 5 }; 
        util.put("arr", a); 
        System.out.println(util); 
    }
  
}


版权所属:JSON LA在线解析

原文地址:https://www.jsonla.com /blog/32.html

转载时必须以链接形式注明原始出处及本声明。


附件下载:

备注:点击文件名下载,附件源来自云端,只能在本站下载。复制下载链接无效。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

支付扫码

所有赞助/开支都讲公开明细,用于网站维护

查看我的收藏

正在加载... ...