由于在实际工作中使用fastjson解析嵌套map的场景非常多,所以在此备忘一下:
引入阿里的fastjson的pom:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
一个比较复杂的json例子:
{
"actId": "1800025",
"originCode": 1,
"role": "TEACHER",
"time": 1471077017804,
"userId": "1111",
"userName": "测试教师",
"userIcon": "xyz",
"userIp": "1.1.1.1",
"countyId": "370105",
"countyName": "天桥区",
"schoolId": "1234",
"schoolName": "测试小学",
"data": {
"subjectId": "020",
"subjectName": "数学",
"uploadFileList": [
{
"teachFileType": "1",
"custom": "xtz"
},
{
"teachFileType": "1"
}
]
}
}
使用fastjson的解析代码:
import com.alibaba.fastjson.JSON;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2016/8/12.
*/
public class ParserJson {
/***
*
* @param map 需要打印的Map结构
*/
public static void showMap(Map<String,Object> map){
for(Map.Entry<String,Object> kv:map.entrySet()){
System.out.println(kv.getKey()+" "+kv.getValue());
}
}
public static void main(String[] args) throws Exception {
String json="{\"actId\":\"2300003\",\"originCode\":1,\"role\":\"TEACHER\"" +
",\"time\":1470126407000,\"userId\":\"1111\",\"userName\":\"测试教师\",\"userIcon\":\"xyz\",\"userIp\":\"1.1.1.1\",\"countyId\":\"370105\",\"countyName\":\"天桥区\",\"schoolId\":\"1234\",\"schoolName\":\"测试小学\",\"data\":{\"subjectId\":\"020\",\"subjectName\":\"数学\"," +
"\"uploadFileList\":[{\"teachFileType\":\"1\"},{\"teachFileType\":\"1\",\"custom\":\"xt\"},{\"teachFileType\":\"1\"}]}}";
Map<String,Object> map=(Map)JSON.parse(json);
System.out.println("打印第一层map");
showMap(map);
Map<String,Object> dataMap=(Map<String, Object>) map.get("data");
System.out.println("打印第二层map");
showMap(dataMap);
System.out.println("打印第三层list+map");
List<Map<String,Object>> fileList= (List<Map<String, Object>>) dataMap.get("uploadFileList");
for(Map<String,Object> soj:fileList){
System.out.println(soj);
Map<String,Object> detailData=soj;
showMap(detailData);
System.out.println("----------------------------------------");
}
}
}
解析结果:
ParserJson
打印第一层map
role TEACHER
data {"uploadFileList":[{"teachFileType":"1"},{"custom":"xt","teachFileType":"1"},{"teachFileType":"1"}],"subjectId":"020","subjectName":"数学"}
actId 2300003
userName 测试教师
userId 1111
countyId 370105
schoolId 1234
userIp 1.1.1.1
originCode 1
time 1470126407000
userIcon xyz
schoolName 测试小学
countyName 天桥区
打印第二层map
uploadFileList [{"teachFileType":"1"},{"custom":"xt","teachFileType":"1"},{"teachFileType":"1"}]
subjectId 020
subjectName 数学
打印第三层list+map
{"teachFileType":"1"}
teachFileType 1
----------------------------------------
{"custom":"xt","teachFileType":"1"}
custom xt
teachFileType 1
----------------------------------------
{"teachFileType":"1"}
teachFileType 1
----------------------------------------
Process finished with exit code 0
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
使用fastjson 解析实体嵌套,只要一行代码就可以解析负责的json嵌套.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
使用fastjson.jar解析复杂的json数据,包含完整实例代码
使用org.json 、谷歌gson 以及阿里巴巴fastjson解析JSON格式数据的完整例子(JavaWeb项目)
fastjson解析json数据,解析速度快
fastjson解析jar包,是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。 、1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection...
使用fastjson 解析实体嵌套,只要一行代码就可以解析负责的json嵌套
fastjson 的一个小例子,里面是我博客中的代码, http://blog.csdn.net/yunxiaoxiaoyun/article/details/16811973
fastjson的各种用法例子,给初学者学习使用
使用ListView和异步加载(AsyncTask)来下载网络上的资源,然后用fastjson解析资源,并显示在ListView中。
Volley。fastJson解析网络Json ,多线程显示图片,简单缓存图片,万能适配器,完美解决图片排序混乱问题,完美解决图片多次加载问题
fastjson 快速解析json json、List互转
FastJson解析Android客户端 ,使用xutils网络请求
java使用fastjson解析json字符串,附fastjson包,后台接口需输出json格式字符串,非xml格式
okhttp请求+FastJson解析数据
FastJson解析Json数据源码,
利用fastjson解析科大讯飞的听写json字符串,实现语音听写
详细Gson和fastJson解析json案例
FastJson是阿里巴巴工程师开发的一个json处理工具包,包括“序列化”和“反序列化”两部分。支持Java Bean、集合、Map、日期等等。我这是用fastjson解析json串一个简单的案例。
RXVolley请求网络+fastJson解析json,简单的实例。
实现json转换,fastjson json json转换,可以帮助开发中涉及json格式处理的程序猿。