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
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.().toString());
String value = ((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.()).toString();
String value = (String) (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.String());
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.().toString());
String value = ((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.()).toString();
String value = (String) (key).toString();
data.put(key, value);
}
}catch (Exception e) {
java中字符串转数组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:"+("name")+",sex:"+
<("sex")+",school:"+("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内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论