java中JSONObject转换为HashMap(方法+main方法调用实例)
1.首先要导入json相关的jar包
引入的jar包:
(版本自行定义,可以选用使用人数偏多的版本,这样比较稳定)
commons-beanutils-1.9.2.jar
commons-collections-3.2.1.jar
commons-lang-2.6.jar
commons-logging-1.2.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
jar包的下载可以去下面这个网址搜索:
https://mvnrepository.com/
2.在Eclipse下(也可以是IntelliJ IDEA或者MyEclipse)
新建package和Class(步骤略过,可自行选择名字),这里就使用jsonTest。
以下代码块方法见注释,是将JSONObject转换为HashMap的主要方法,传入参数为一个JSONObject对象,返还值为一个HashMap。
//1.將JSONObject對象轉換為HashMap<String,String> public static HashMap<String, String> JsonObjectToHashMap(JSONObject jsonObj){ HashMap<String, String> data = new HashMap<String, String>(); Iterator it = jsonObj.keys(); while(it.hasNext()){ String key = String.valueOf(it.next().toString()); String value = (String)jsonObj.get(key).toString(); data.put(key, value); } System.out.println(data); return data; }
这个方法是将JSON字符串转换为HashMap,传入参数为一段json格式的字符串,返还一个HashMap。
//2.将json字符串转换成HashMap<String,String> public static HashMap<String, String> JsonToHashMap(String JsonStrin){ HashMap<String, String> data = new HashMap<String, String>(); try{ // 将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(JsonStrin); @SuppressWarnings("rawtypes") Iterator it = jsonObject.keys(); // 遍历jsonObject数据,添加到Map对象 while (it.hasNext()) { String key = String.valueOf(it.next()).toString(); String value = (String) jsonObject.get(key).toString(); data.put(key, value); } }catch (Exception e) { e.printStackTrace(); //JOptionPane.showMessageDialog(null,"ERROR:["+e+"]"); } System.out.println(data); return data; }
在这里顺便介绍一下Iterator类(迭代器)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
3.直接上代码
package JSON; import java.util.HashMap; import java.util.Iterator; import net.sf.json.JSONObject; public class JsonTest { public static void main(String[] args) { JSONObject jsonObj = new JSONObject(true); String content1 = "aaaaa"; String content2 = "bbbbb"; String content3 = "ccccc"; jsonObj.put("a", content1); jsonObj.put("b", content2); jsonObj.put("c", content3); System.out.println(jsonObj.toString()); JsonObjectToHashMap(jsonObj); String jsonstr = "{name:'王杨',sex:'男',school:'郑州航空工业管理学院'}"; JsonToHashMap(jsonstr); } //1.將JSONObject對象轉換為HashMap<String,String> public static HashMap<String, String> JsonObjectToHashMap(JSONObject jsonObj){ HashMap<String, String> data = new HashMap<String, String>(); Iterator it = jsonObj.keys(); while(it.hasNext()){ String key = String.valueOf(it.next().toString()); String value = (String)jsonObj.get(key).toString(); data.put(key, value); } System.out.println(data); return data; } //2.将json字符串转换成HashMap<String,String> public static HashMap<String, String> JsonToHashMap(String JsonStrin){ HashMap<String, String> data = new HashMap<String, String>(); try{ // 将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(JsonStrin); @SuppressWarnings("rawtypes") Iterator it = jsonObject.keys(); // 遍历jsonObject数据,添加到Map对象 while (it.hasNext()) { String key = String.valueOf(it.next()).toString(); String value = (String) jsonObject.get(key).toString(); data.put(key, value); } }catch (Exception e) { e.printStackTrace(); //JOptionPane.showMessageDialog(null,"ERROR:["+e+"]"); } System.out.println(data); return data; } }
记得修改自己的package名称和 class名称。
4.调用main方法测试
(1)传入参数为JSONObject:
输出结果为:
(2)传入参数为JSON字符串:
输出结果为:
这里可以看到,输出的参数顺序和传入时正好相反。但是输出类型为HashMap,数据存储的格式是以key-value键值对的形式存数于HashMap中的。我们可以通过获取key值来获取到其对应的value。
增加如下代码在main方法最后面:
System.out.println("");//空格换行 //通过对应的key键值,获取value HashMap<String,String> hashmap = JsonToHashMap(jsonstr); System.out.println("--------通过遍历HashMap输出值:-------"); System.out.println("name:"+hashmap.get("name")+",sex:"+ hashmap.get("sex")+",school:"+hashmap.get("school"));
得到如下结果:
结语:
到此基本的方法介绍完毕,其实是依靠了JSONObject这个对象的fromObject()方法。fromObject()方法可以转换的类型很多,可以是map、list、数组等等。运用在自己的项目中时,可以是bean或者model等自定义的类。
1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "second" ); JSONArray jsonArray2 = JSONArray.fromObject( list ); 2. Map集合转换成json代码 Map map = new HashMap(); map.put("name", "json"); map.put("bool", Boolean.TRUE); map.put("int", new Integer(1)); map.put("arr", new String[] { "a", "b" }); map.put("func", "function(i){ return this.arr[i]; }"); JSONObject json = JSONObject.fromObject(map); 3. Bean转换成json代码 JSONObject jsonObject = JSONObject.fromObject(new JsonBean()); 4. 数组转换成json代码 boolean[] boolArray = new boolean[] { true, false, true }; JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
以上类型均可以借用fromObject()方法转换为一个JSONObject类型实例。
json作为轻量级的数据格式,在前后端数据交互时很常见,每个公司应该都有自己的JSON转换方法,是公司常见的工具类。
方便了随后的开发使用。
到此这篇关于java中JSONObject转换为HashMap(方法+main方法调用实例)的文章就介绍到这了,更多相关JSONObject转换为HashMap内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
使用PHP+JavaScript将HTML页面转换为图片的实例分享
这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19- 在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
- 这篇文章主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧...2016-02-27
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下把普通照片快速转换成卡通效果的教程,各位想知道具体制作步骤的使用者们,那么下面就快阿里跟着小编一起看一...2016-09-14
- 本篇文章是对C#中数据类型转换的几种形式进行了详细的分析介绍,需要的朋友参考下...2020-06-25
PHP编码转换函数mb_convert_encoding与iconv用法
文章来实现一个PHP编码转换函数mb_convert_encoding与iconv用法,希望例子能帮助到各位。 将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查...2016-11-25- 这篇文章主要介绍了c#的类型转换详解,类型转换分两种形式:隐式转换、显示转换,下面是详细介绍...2020-06-25
- 这篇文章主要为大家详细介绍了JavaScript实现数据类型的相互转换,感兴趣的朋友可以参考一下...2016-03-09
- 这篇文章主要介绍了JavaScript实现Base64编码转换的相关资料,非常简单实用,需要的朋友可以参考下...2016-04-25
- 这篇文章主要介绍了C#将数字转换成字节数组的方法,涉及C#字符串操作的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
java中JSONObject转换为HashMap(方法+main方法调用实例)
这篇文章主要介绍了java中JSONObject转换为HashMap(方法+main方法调用实例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-14- 用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
- c#允许定义自己的数据类型,这意味着需要某些工具支持在自己的数据类型间进行数据转换。方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明是隐式或者显式,以说明怎么使用它...2020-06-25
JSON字符串转换JSONObject和JSONArray的方法
这篇文章主要介绍了JSON字符串转换JSONObject和JSONArray的方法的相关资料,需要的朋友可以参考下...2016-06-12photoshop把照片转换为铅笔素描画人像效果后期处理教程
今天小编在这里就来给各位photoshop的这一款软件的使用者们来说一说把照片转换为铅笔素描画人像效果的后期处理教程,各位想知道具体的后期处理方法的使用者们,那么大家...2016-09-14Golang中的自定义类型之间的转换的实现(type conversion)
这篇文章主要介绍了Golang中的自定义类型之间的转换的实现(type conversion),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-21- 这篇文章主要介绍了C#数据类型及其转换详解,在C#中,数据类型可以分为几种类型,今天小编通过本文给大家详细介绍,需要的朋友可以参考下...2020-07-10
- 这篇文章主要介绍了Lua判断变量是否为数字、字符串是否可以转换为数字等,本文讲解了Lua 判断是字符还是数字的方法、Lua判断数字的方法、判断可否转换为数字的方法、判断并且准备一个初值的方法,需要的朋友可以参考下...2020-06-30
- 这篇文章主要介绍了Python将字典转换为XML的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-08-02
- 这篇文章主要介绍了Python通过VGG16模型实现图像风格转换操作,结合实例形式详细分析了Python使用VGG16模型实现图像风格转换的具体原理、操作步骤与实现方法,需要的朋友可以参考下...2020-04-27