专栏首页我是攻城师Fastjson解析嵌套Map例子

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),作者:woshigcs

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在spark里面使用窗口函数

    在大数据分析中,窗口函数最常见的应用场景就是对数据进行分组后,求组内数据topN的需求,如果没有窗口函数,实现这样一个需求还是比较复杂的,不过现在大多数标准SQ...

    我是攻城师
  • 关于SparkStreaming中的checkpoint

    我是攻城师
  • 高效读取大数据文本文件(上亿行数据)

    我是攻城师
  • 投稿量激增56%,CVPR 2019接收论文的关键词是什么?

    近日,一个 GitHub 项目对本届大会的论文接收情况、关键词等相关信息进行了可视化分析,也许能为我们提供有关计算机视觉热门研究方向的洞见。

    机器之心
  • CVPR 2019收录论文ID公开,你上榜了吗?

    计算机视觉和模式识别大会 CVPR(Conference on Computer Vision and Pattern Recognition)作为人工智能领域...

    AI科技大本营
  • 后期静态绑定在PHP中的使用

    什么叫后期静态绑定呢?其实我们在之前的文章PHP中的static中已经说过这个东西了。今天我们还是再次深入的理解一下这个概念。

    硬核项目经理
  • Debezium结合kafka connect实时捕获mysql变更事件写入elasticsearch实现搜索流程

    本文将会实现一套完整的Debezium结合Kafka Connect实时捕获MySQL变更事件写入Elasticsearch并实现查询的流程.

    XING辋
  • Oracle数据库冷备份与热备份操作梳理

    Oracle数据库的备份方式有冷备份和热备份两种,针对这两种备份的实施过程记录如下: 一、Oracle冷备份 概念 数据库在关闭状态下完成所有物理系统文件拷贝的...

    洗尽了浮华
  • 1300篇!CVPR 2019论文接收结果公布,你上榜了吗?

    CVPR 是首屈一指的年度计算机视觉盛会,在机器学习领域享有盛名。今年的 CVPR 将于 6 月 16 日-20 日于美国加州的长滩市举行。

    机器之心
  • Hive复杂数据类型的使用

    ZHANGHAO

扫码关注云+社区

领取腾讯云代金券