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);
}
 

java json与map互相转换(二)的更多相关文章

  1. java json与map互相转换(一)

      java json与map互相转换(一) CreationTime--2018年7月16日 Author:Marydon 1.准备工作 所需jar包:json-20180130.jar impor ...

  2. Java:JSON和Map相互转换

    Java:JSON与Map相互转换 需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0 ...

  3. GO语言中json与map的转换

    直接上代码(需要引入encoding/json包) // 当前程序的包名 package main // 导入其它的包 import ( "encoding/json" " ...

  4. java json字符串与对象转换

    下载引入包gson-2.0.jar 1.字符转数据 final Map map = new HashMap();map.put("contents",    "[{\&q ...

  5. fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map

    作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...

  6. Bean与Map的转换 和 Map与Bean的转换

    package com.JUtils.beanConvert; import java.beans.BeanInfo; import java.beans.IntrospectionException ...

  7. java json转换(二)

    package com.kps.common.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArra ...

  8. json 与entity/list/map的转换

    一  json -> entity User.java package com.xxx.hotel.train.json.json2entity; import java.io.Serializ ...

  9. java json转换(一)

    主要使用了2个类 JsonConvert.class 和 ConvertHelper.class 由于常规转json.只要model牵涉到复杂的关联实体对象.那么就会出现 深度循环的错误. 因此这里通 ...

随机推荐

  1. 图像质量评估(IQA)

    图像质量评估函数的分类曾是一个比较有争议的话题,在2l世纪以前曾经有过 比较多的讨论.但是随着研究的深入和技术的广泛应用,研究人员对于图像质量 评估函数的分类有了统一的认识,即从实际应用中参考信息供给 ...

  2. 【转】vs2012-vs2010使用stlport库的配置

    http://www.cnblogs.com/sbaicl/archive/2012/08/30/2663114.html STLport下载地址:http://sourceforge.net/pro ...

  3. matlib常用知识

    把文件装入矩阵 x = load('ex4x.dat'); y = load('ex4y.dat'); [m, n] = size(x); %得到矩阵x的行数和列数 ex4x.dat共80行,2列,通 ...

  4. Eclipse系列:如何设置Eclipse关联JDK源码和文档

    一.设置Eclipse关联JDK源码 1.打开Eclipse-->Windows-->Preferences       2. 在弹出的Preferences对话框中,Java--> ...

  5. iOS开发-消息通知机制(NSNotification和NSNotificationCenter)

    iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页 ...

  6. python 获取几小时之前,几分钟前,几天前,几个月前,及几年前的具体时间

    引入以下两个包: import datetime import arrow 具体代码 # import datetime # import arrow def getTime(self, flag,d ...

  7. 【Kafka】Kafka-副本-分区设置-性能调优

    Kafka-副本-分区设置-性能调优 SparkKafkaDemo - Executors kafka replication 负载均衡_百度搜索 Kafka 高性能吞吐揭秘 - 友盟博客 - Seg ...

  8. Pearson(皮尔逊)相关系数

    Pearson(皮尔逊)相关系数:也叫pearson积差相关系数.衡量两个连续变量之间的线性相关程度. 当两个变量都是正态连续变量,而且两者之间呈线性关系时,表现这两个变量之间相关程度用积差相关系数, ...

  9. Spring(十二):IOC容器中Bean的生命周期方法

    IOC容器中Bean的生命周期方法 1)Spring IOC容器可以管理Bean的声明周期,Spring允许在Bean生命周期的特定点执行定制的任务. 2)Spring IOC容器对Bean的生命周期 ...

  10. Linux Kernel 2:用户空间的初始化

    上篇我们知道,kernel初始化后将启动init进程,那么这个进程将干些什么呢?除此之外,kernel还需要做些什么事情呢?(想想文件系统.根存储设备是在什么时候初始化的呢?) 先从文件系统初始化说起 ...