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);
}
java json与map互相转换(二)的更多相关文章
- java json与map互相转换(一)
java json与map互相转换(一) CreationTime--2018年7月16日 Author:Marydon 1.准备工作 所需jar包:json-20180130.jar impor ...
- Java:JSON和Map相互转换
Java:JSON与Map相互转换 需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0 ...
- GO语言中json与map的转换
直接上代码(需要引入encoding/json包) // 当前程序的包名 package main // 导入其它的包 import ( "encoding/json" " ...
- java json字符串与对象转换
下载引入包gson-2.0.jar 1.字符转数据 final Map map = new HashMap();map.put("contents", "[{\&q ...
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...
- Bean与Map的转换 和 Map与Bean的转换
package com.JUtils.beanConvert; import java.beans.BeanInfo; import java.beans.IntrospectionException ...
- java json转换(二)
package com.kps.common.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArra ...
- json 与entity/list/map的转换
一 json -> entity User.java package com.xxx.hotel.train.json.json2entity; import java.io.Serializ ...
- java json转换(一)
主要使用了2个类 JsonConvert.class 和 ConvertHelper.class 由于常规转json.只要model牵涉到复杂的关联实体对象.那么就会出现 深度循环的错误. 因此这里通 ...
随机推荐
- 图像质量评估(IQA)
图像质量评估函数的分类曾是一个比较有争议的话题,在2l世纪以前曾经有过 比较多的讨论.但是随着研究的深入和技术的广泛应用,研究人员对于图像质量 评估函数的分类有了统一的认识,即从实际应用中参考信息供给 ...
- 【转】vs2012-vs2010使用stlport库的配置
http://www.cnblogs.com/sbaicl/archive/2012/08/30/2663114.html STLport下载地址:http://sourceforge.net/pro ...
- matlib常用知识
把文件装入矩阵 x = load('ex4x.dat'); y = load('ex4y.dat'); [m, n] = size(x); %得到矩阵x的行数和列数 ex4x.dat共80行,2列,通 ...
- Eclipse系列:如何设置Eclipse关联JDK源码和文档
一.设置Eclipse关联JDK源码 1.打开Eclipse-->Windows-->Preferences 2. 在弹出的Preferences对话框中,Java--> ...
- iOS开发-消息通知机制(NSNotification和NSNotificationCenter)
iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页 ...
- python 获取几小时之前,几分钟前,几天前,几个月前,及几年前的具体时间
引入以下两个包: import datetime import arrow 具体代码 # import datetime # import arrow def getTime(self, flag,d ...
- 【Kafka】Kafka-副本-分区设置-性能调优
Kafka-副本-分区设置-性能调优 SparkKafkaDemo - Executors kafka replication 负载均衡_百度搜索 Kafka 高性能吞吐揭秘 - 友盟博客 - Seg ...
- Pearson(皮尔逊)相关系数
Pearson(皮尔逊)相关系数:也叫pearson积差相关系数.衡量两个连续变量之间的线性相关程度. 当两个变量都是正态连续变量,而且两者之间呈线性关系时,表现这两个变量之间相关程度用积差相关系数, ...
- Spring(十二):IOC容器中Bean的生命周期方法
IOC容器中Bean的生命周期方法 1)Spring IOC容器可以管理Bean的声明周期,Spring允许在Bean生命周期的特定点执行定制的任务. 2)Spring IOC容器对Bean的生命周期 ...
- Linux Kernel 2:用户空间的初始化
上篇我们知道,kernel初始化后将启动init进程,那么这个进程将干些什么呢?除此之外,kernel还需要做些什么事情呢?(想想文件系统.根存储设备是在什么时候初始化的呢?) 先从文件系统初始化说起 ...