java中JSONObject转换为HashMap(方法+main方法调用实例)

 更新时间:2020年11月14日 16:09  
这篇文章主要介绍了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内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

相关文章

  • hashMap扩容时应该注意这些死循环问题

    今天给大家带来的是关于Java的相关知识,文章围绕着hashMap扩容时的死循环问题展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下...2021-06-10
  • Java使用poi做加自定义注解实现对象与Excel相互转换

    这篇文章主要介绍了Java使用poi做加自定义注解实现对象与Excel相互转换,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-29
  • 一文搞懂C++中的四种强制类型转换

    很多朋友向小编了解C语言中怎么进行强制类型转换呢?在这小编告诉大家强制类型转换可以分为两种,一种是隐式类型转换一种是显示类型转换,下面通过示例代码给大家介绍下,需要的朋友参考下吧...2021-07-07
  • 深入理解Java中的HashMap

    HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文将深入探讨HashMap的结构实现和功能原理...2021-06-11
  • C# 数据类型转换

    这篇文章主要讲解C语言中基本数据类型、字符串与其它数据类型以及常见的日期类型的转换,希望能给大家做一个参考。希望能够给你带来帮助...2021-07-08
  • Python量化交易实战之使用Resample函数转换“日K”数据

    resample函数是Python数据分析库Pandas的方法函数,它主要用于转换时间序列的频次,今天通过本文给大家分享python使用Resample函数转换时间序列的相关知识,感兴趣的朋友一起看看吧...2021-06-02
  • 详解C语言中不同类型的数据转换规则

    这篇文章给大家讲解不同类型数据间的混合运算与类型转换,有自动类型转换和强制类型转换,针对每种转换方法小编给大家介绍的非常详细,需要的朋友参考下吧...2021-07-07