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牵涉到复杂的关联实体对象.那么就会出现 深度循环的错误. 因此这里通 ...
随机推荐
- MySQL中的information_schema数据库表说明
MySQL 中的 information_schema 数据库 版权声明:https://blog.csdn.net/kikajack/article/details/80065753 1. 概述 ...
- tf.argmax
tf.argmax(input, axis=None, name=None, dimension=None) Returns the index with the largest value acro ...
- Redis 性能问题的记录
最近线上使用redis, 查询的情况不甚理想, 这个查询操作是个 lua 脚本, 包含如下操作 开发机 redis, 没有其他干扰, 插入的 zset 有 5000 member 左右, 使用的 re ...
- AltiumDesigner PCB布局布线过程与技巧
首先是原理图设计. 原理图设计是前期准备工作,对简单的板子,如果熟练流程,不妨可以跳过.但是对于初学者一定要按流程来,这样一方面可以养成良好的习惯,另一方面对复杂的电路也只有这样才能避免出错.在画原理 ...
- 关于html+ashx开发中几个问题的解决方法 (转)
在跟html+ashx打交道的园友们肯定会发现,这种模式虽然优美,但在开发中会遇到一些难处理的地方.我也不例外,下面是自己在实际开发中总结出来的几条经验,希望跟大家分享,更希望得到大家的建议和更好的解 ...
- 华为推送 简介 集成 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Sequence在Oracle中的使用
Oracle中,当需要建立一个自增字段时,需要用到sequence.sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查 ...
- 8天学通MongoDB——第一天 基础入门(转)
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...
- python os.path模块常用方法详解 ZZ
os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...
- Flask Restful服务简单实现
官网:http://flask.pocoo.org/docs/1.0/quickstart/#routing 1.安装 windows下:pip3 install Flask 具体参照:windows ...