文档章节

JSON转MAP工具类

DeanFan
 DeanFan
发布于 2016/10/28 15:30
字数 302
阅读 37
收藏 1
public static void main(String[] args) {
	String str = "{\"ID\":1,\"remark\":\"你好\",\"price\":1.2,\"sub\":"
					+ "[" 
						 + "{\"ID\":2,\"parentId\":1,\"remark\":\"我是子级\"}"
						 + ",{\"ID\":3,\"parentId\":1,\"remark\":\"我是子级2\"}"
					+ "]"
			   +"}";
	
	Map<String, Object> rootMap = JsonUtils.jsonToMap(JSONObject.fromObject(str));
	for (Map.Entry<String, Object> entry : rootMap.entrySet()) {
		if (entry.getKey().equals("sub")) {
			List<Map<String, Object>> subList = jsonToList(entry.getValue());
			int i = 0;
			for (Map<String, Object> subMap : subList) {
				i++;
				for (Map.Entry<String, Object> subEntry : subMap.entrySet()) {
					System.out.println("sub" + i + "#" + subEntry.getKey() 
							+ ":" + subEntry.getValue());
				}
			}
			continue;
		}
		System.out.println(entry.getKey() + ":" + entry.getValue());
	}
}

运行结果:

下面是JSON工具类代码:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonUtils {
	/**
	 * 
	 * @Description : Object转Map
	 * @param
	 * @return
	 * @author DeanFan
	 */
	public static List<Map<String, Object>> jsonToList(Object obj) {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		List<?> jsonObjectList = reflect(JSONArray.fromObject(obj));
		for (Object object : jsonObjectList) {
			list.add(jsonToMap(JSONObject.fromObject(object)));
		}

		return list;
	}

	/**
	 * 
	 * @Description :JSONObject转Map
	 * @param
	 * @return
	 * @author DeanFan
	 */
	public static Map<String, Object> jsonToMap(JSONObject jsonObject) {
		Map<String, Object> map = new HashMap<String, Object>();
		Set<?> keys = jsonObject.keySet();
		for (Object key : keys) {
			Object o = jsonObject.get(key);
			if (o instanceof JSONArray)
				map.put((String) key, reflect((JSONArray) o));
			else if (o instanceof JSONObject)
				map.put((String) key, jsonToMap((JSONObject) o));
			else
				map.put((String) key, o);
		}
		return map;
	}

	/**
	 * 
	 * @Description : JSONObject转List
	 * @param json
	 * @return
	 * @author DeanFan
	 */
	public static List<?> reflect(JSONArray jsonArray) {
		List<Object> list = new ArrayList<Object>();
		for (Object o : jsonArray) {
			if (o instanceof JSONArray)
				list.add(reflect((JSONArray) o));
			else if (o instanceof JSONObject)
				list.add(jsonToMap((JSONObject) o));
			else
				list.add(o);
		}
		return list;
	}
}

使用到json-lib-2.4-jdk15.jar

下载:http://pan.baidu.com/s/1geSHhir

Maven引用:

        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>

© 著作权归作者所有

DeanFan
粉丝 2
博文 6
码字总数 2989
作品 0
无锡
程序员
私信 提问
今天看到这个,说得有点玄,感到很意外

不是说不信有这么好的json工具,还真没遇见过,特别方便的 介绍光说了 java对象转json, 那json转java对象呢? 比如 User类里有个contact属性是Context类型,能转换成java对象?,怎么设置类...

azheng
2011/03/08
1K
4
spring接收json格式的多个对象参数(变通法)

两种方法 方法1 如果使用spring mvc同客户端通信,完全使用json数据格式,需要增加RequestBody注解,函数参数为自定义类 @Controllerpublic class TestController{@RequestMapping("test")@R...

xiaomin0322
02/27
21
1
jackson,将多个不同的pojo类,添加到map里,转json了之后,又如何转回map

我在map里put了三个类,分别 User,Dept,UserInfo类, key都是类名, 然后用ObjectMapper。将这个map转成了json, 现在如何将这个json转回map? 转map老是出错。 json串是这样子的: { "use...

jins_
2017/04/09
351
0
161.使用fastjson将json格式的数据转化为对象

导入fastjson的jar包 <!-- 9.fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> 2. 常用几种类型的j......

Lucky_Me
2018/07/22
591
0
Hutool 2.15.8 发布,Java 工具集

Hutool 2.15.8 发布了。Hutool 是一个Java工具包,提供了丰富的文件、日期、日志、正则、字符串、配置文件等工具方法,并封装了一套简单易用的ORM框架。 更新内容: 1、修复Http编码问题 2、...

路小磊
2016/09/07
2.3K
10

没有更多内容

加载失败,请刷新页面

加载更多

python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
4分钟前
0
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
735
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
26
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
79
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部