zoukankan      html  css  js  c++  java
  • java json与map互相转换(二)

    java json与map互相转换(二)

    CreationTime--2018年7月16日15点09分

    Author:Marydon

    1.准备工作

      所需jar包:

      commons-beanutils-1.8.3.jar;

      commons-collections-3.2.1.jar;

      commons-lang-2.6.jar;

      commons-logging-1.1.3.jar;

      ezmorph-1.0.6.jar;

      json-lib-2.4-jdk15.jar

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    import java.util.SortedMap;
    import java.util.TreeMap;
    import java.util.Map.Entry;
    import org.apache.log4j.Logger;
    import net.sf.json.JSONObject;
    
    /**
     * JSON数据处理工具类
     * @explain
     * @author Marydon
     * @creationTime 2018年7月16日上午11:45:35
     * @version 1.0
     * @since
     * @email marydon20170307@163.com
     */
    public class JsonUtils {
        
        private static Logger log = Logger.getLogger(JsonUtils.class);
    }

    2.json转map

      没有现成的方法,需要自己进行封装。

      方式一:无序Map

    /**
     * 将JSONObject转换成无序Map
     * @explain
     * @param jsonObject
     * @return HashMap 无序Map
     */
    public static Map<String, Object> toHashMap(JSONObject jsonObject) {
        // 用于存储接收到的key:value
        Map<String, Object> data = new HashMap<String, Object>();
        // 获取json对象中的键
        @SuppressWarnings("unchecked")
    	Set<String> keySet = jsonObject.keySet();
        String key = "";
        Object value = null;
        // 遍历jsonObject数据,添加到Map对象
        for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) {
            key = iterator.next();
            value = jsonObject.get(key);
            data.put(key, value);
        }
        log.info("JSONObject-->HashMap:" + data);
        return data;
    }

      方式二:有序Map

    /**
     * 将JSONObject转换成升序Map
     * @explain 将参数按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,
     *          以此类推通过SortedMap可以实现
     * @param jsonObject
     * @return SortedMap 按ASCII码升序排列
     */
    public static Map<String, Object> toSortedMap(JSONObject jsonObject) {
        // 用于存储接收到的key:value,并按key以ASCII码进行升序排列组合
        SortedMap<String, Object> data = new TreeMap<String, Object>();
        // 获取json对象中的键
        @SuppressWarnings("unchecked")
    	Set<String> keySet = jsonObject.keySet();
        String key = "";
        Object value = null;
        // 遍历json数据,添加到SortedMap对象
        for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) {
            key = iterator.next();
            value = jsonObject.get(key);
            data.put(key, value);
        }
        log.info("JSONObject-->SortedMap:" + data);
        return data;
    }

    3.map转json

      用法:JSONObject.fromObject(map);

    4.举例说明

    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("method_code", "JMJKK0101");
        map.put("identifier", "000000000000");
        map.put("timestamp", "");
        map.put("version", "Ver1.1");
        map.put("area_code", "00000000");
        map.put("access_type", "0");
        map.put("access_id", "0101010101");
        map.put("complete_key", "HMACSHA1");
        map.put("complete_str", "摘要加密字符串");
        map.put("param_key", "AES");
        map.put("param_set", "请求业务参数加密字符串");
        // Map-->json
        JSONObject jo = JSONObject.fromObject(map);
        System.out.println(jo);
        // json-->HashMap
        Map<String, Object> hashMap = JsonUtils.toHashMap(jo);
        System.out.println(hashMap);
        // json-->SortedMap
        Map<String, Object> sortedMap = JsonUtils.toSortedMap(jo);
        System.out.println(sortedMap);  
    }
  • 相关阅读:
    JavaScript设计模式-21.命令模式
    JavaScript设计模式-20.责任链模式
    JavaScript设计模式-18.享元模式
    JavaScript设计模式-19.代理模式
    JavaScript设计模式-17.装饰者模式(下)
    JavaScript设计模式-16.装饰者模式(上)
    面向对象之集合ArrayList
    面向对象之继承
    字符串的添加与切割~~~
    面向对象中构造函数的小练习
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/9317889.html
Copyright © 2011-2022 走看看