Fastjson解析嵌套Map例子

由于在实际工作中使用fastjson解析嵌套map的场景非常多,所以在此备忘一下: 引入阿里的fastjson的pom:

Java代码

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.15</version>
  5. </dependency>

一个比较复杂的json例子:

Java代码

  1. {
  2. "actId": "1800025",
  3. "originCode": 1,
  4. "role": "TEACHER",
  5. "time": 1471077017804,
  6. "userId": "1111",
  7. "userName": "测试教师",
  8. "userIcon": "xyz",
  9. "userIp": "1.1.1.1",
  10. "countyId": "370105",
  11. "countyName": "天桥区",
  12. "schoolId": "1234",
  13. "schoolName": "测试小学",
  14. "data": {
  15. "subjectId": "020",
  16. "subjectName": "数学",
  17. "uploadFileList": [
  18. {
  19. "teachFileType": "1",
  20. "custom": "xtz"
  21. },
  22. {
  23. "teachFileType": "1"
  24. }
  25. ]
  26. }
  27. }

使用fastjson的解析代码:

Java代码

  1. import com.alibaba.fastjson.JSON;
  2. import java.util.List;
  3. import java.util.Map;
  4. /**
  5. * Created by Administrator on 2016/8/12.
  6. */
  7. public class ParserJson {
  8. /***
  9. *
  10. * @param map 需要打印的Map结构
  11. */
  12. public static void showMap(Map<String,Object> map){
  13. for(Map.Entry<String,Object> kv:map.entrySet()){
  14. System.out.println(kv.getKey()+" "+kv.getValue());
  15. }
  16. }
  17. public static void main(String[] args) throws Exception {
  18. String json="{\"actId\":\"2300003\",\"originCode\":1,\"role\":\"TEACHER\"" +
  19. ",\"time\":1470126407000,\"userId\":\"1111\",\"userName\":\"测试教师\",\"userIcon\":\"xyz\",\"userIp\":\"1.1.1.1\",\"countyId\":\"370105\",\"countyName\":\"天桥区\",\"schoolId\":\"1234\",\"schoolName\":\"测试小学\",\"data\":{\"subjectId\":\"020\",\"subjectName\":\"数学\"," +
  20. "\"uploadFileList\":[{\"teachFileType\":\"1\"},{\"teachFileType\":\"1\",\"custom\":\"xt\"},{\"teachFileType\":\"1\"}]}}";
  21. Map<String,Object> map=(Map)JSON.parse(json);
  22. System.out.println("打印第一层map");
  23. showMap(map);
  24. Map<String,Object> dataMap=(Map<String, Object>) map.get("data");
  25. System.out.println("打印第二层map");
  26. showMap(dataMap);
  27. System.out.println("打印第三层list+map");
  28. List<Map<String,Object>> fileList= (List<Map<String, Object>>) dataMap.get("uploadFileList");
  29. for(Map<String,Object> soj:fileList){
  30. System.out.println(soj);
  31. Map<String,Object> detailData=soj;
  32. showMap(detailData);
  33. System.out.println("----------------------------------------");
  34. }
  35. }
  36. }

解析结果:

Java代码

  1. ParserJson
  2. 打印第一层map
  3. role TEACHER
  4. data {"uploadFileList":[{"teachFileType":"1"},{"custom":"xt","teachFileType":"1"},{"teachFileType":"1"}],"subjectId":"020","subjectName":"数学"}
  5. actId 2300003
  6. userName 测试教师
  7. userId 1111
  8. countyId 370105
  9. schoolId 1234
  10. userIp 1.1.1.1
  11. originCode 1
  12. time 1470126407000
  13. userIcon xyz
  14. schoolName 测试小学
  15. countyName 天桥区
  16. 打印第二层map
  17. uploadFileList [{"teachFileType":"1"},{"custom":"xt","teachFileType":"1"},{"teachFileType":"1"}]
  18. subjectId 020
  19. subjectName 数学
  20. 打印第三层list+map
  21. {"teachFileType":"1"}
  22. teachFileType 1
  23. ----------------------------------------
  24. {"custom":"xt","teachFileType":"1"}
  25. custom xt
  26. teachFileType 1
  27. ----------------------------------------
  28. {"teachFileType":"1"}
  29. teachFileType 1
  30. ----------------------------------------
  31. Process finished with exit code 0

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2016-08-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏图形学与OpenGL

WebGL三角形旋转变换

2441
来自专栏函数式编程语言及工具

SDP(9):MongoDB-Scala - data access and modeling

    MongoDB是一种文件型数据库,对数据格式没有硬性要求,所以可以实现灵活多变的数据存储和读取。MongoDB又是一种分布式数据库,与传统关系数据库不同...

3894
来自专栏小樱的经验随笔

BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】

1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 103...

2956
来自专栏码匠的流水账

聊聊flink的SourceFunction

flink-streaming-java_2.11-1.6.2-sources.jar!/org/apache/flink/streaming/api/func...

2033
来自专栏杂七杂八

Pandas数据分析包

Pandas是面板数据(Panel Data)的简写。它是Python最强大的数据分析和探索工具,因金融数据分析工具而开发,支持类似SQL的数据增删改查,支持...

4306
来自专栏calmound

UVA 10604 Chemical Reaction(六维dp数组)

题意:有六种不同的试剂,放于试管中,不同的试剂融合其产生的热量不同,且生成的新试剂也不相同,问最后最低温度是多少。 分析:由于只有六种试剂,所以开辟一个六维dp...

3637
来自专栏ml

位运算的方法,大结

Title:       位操作基础篇之位操作全面总结 Author:     MoreWindows E-mail:      morewindows@126...

6018
来自专栏SeanCheney的专栏

《Pandas Cookbook》第09章 合并Pandas对象

1651
来自专栏noteless

[四] java8 函数式编程 收集器浅析 收集器Collector常用方法 运行原理 内部实现

收集器是由四个函数约定构成,它们一起工作,将条目汇集到一个可变的结果容器中,并可选择性地对结果执行最终转换。

2422
来自专栏五分钟学算法

LeeCode题目图解

There is an English version of README here. just click it!

1592

扫码关注云+社区

领取腾讯云代金券