文档章节

Fastjson解析嵌套Map例子

九劫散仙
 九劫散仙
发布于 2016/08/15 10:30
字数 396
阅读 141
收藏 2
点赞 0
评论 0

由于在实际工作中使用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

© 著作权归作者所有

共有 人打赏支持
九劫散仙
粉丝 260
博文 174
码字总数 189625
作品 0
海淀
FastJson 1.2.16 和 1.1.53.android 发布

FastJson 1.2.16 和 1.1.53.android 发布了。 1.1.53.android版本暂无相关改进说明,可查看提交记录,了解更多该版本信息。 1.2.16版本改进日志如下: Bug Fixed 修复List字段存在特别字符并...

oschina ⋅ 2016/08/15 ⋅ 4

还原json循环引用对象的一种办法

后端数据实体都是由hibernate生成的,与浏览器客户端交互json时,采用了alibaba FastJson库。 首先要说fastJson的确为众多json类库中数一数二的,api简单易用,性能强悍,测试完整,典型的国...

Spance ⋅ 2013/08/02 ⋅ 8

json处理,json、object的相互转化

用 FastJson将Json转换Bean ,用Jackson或Gson将Bean 转FastJson 要求能够支持获取Object中的Object,即支持深层嵌套的Object解析,此外json、Object间的相互转换要快速。 参考:各个JSON技术...

刘阳0292 ⋅ 2017/07/09 ⋅ 0

fastjson 对象多层嵌套

今天看了一下fastjson的系列化和反系列化的例子, 都是一层对象嵌套: 例如Group 包含 User。 我想问的是fastjson支持多层对象嵌套的系列化和反系列化吗, 例如:Group 包含 User, User包含C...

孤独人 ⋅ 2014/02/21 ⋅ 4

json解析:[2]fastjson 使用

利用阿里的fastjson包对对象进行 json的转化与解析,本篇为第二篇,第一篇讲述的是利用gson进行json数据解析,地址:jingyan.baidu.com/article/e8cdb32b619f8437042bad53.html 常用类型 类型...

John-HZ ⋅ 2015/02/05 ⋅ 0

解决fastjson内存对象重复/循环引用json错误

什么是重复/循环引用 简单说,重复引用就是一个集合/对象中的多个元素/属性同时引用同一对象,循环引用就是集合/对象中的多个元素/属性存在相互引用导致循环。 举例说明 重复引用 List<Objec...

寻知者 ⋅ 2016/12/20 ⋅ 0

yidasanqian/json-util

json-util Json Util Integrate Jackson、Gson And Fastjson json-util工具类整合了Jackson、Gson和Fastjson库并统一API。 Env JDK7+ Maven Feature 统一调用API,形如。目前支持的转换的列表...

yidasanqian ⋅ 05/01 ⋅ 0

fastjson发布1.1.3版本

Fastjson 1.1.3是一个重要的功能增强版本,在这个版本开始,fastjson支持循环引用,完善支持WriteClassName的特性,使得fastjson开始具备替换hessian和java serialize的能力。 支持循环引用。...

wenshao ⋅ 2011/08/29 ⋅ 4

fastjson 1.1.55 android 发布,Bug 修复

fastjson 1.1.55.android 发布了, 这是一个针对 android 发布的小版本,例行的 BUG 修复功能增强,是针对上一个android 版本 1.1.54.android 的升级。 fastjson 的 android 版本针对 androi...

wenshao ⋅ 2016/11/20 ⋅ 0

fastjson 对象多层嵌套

今天看了一下fastjson的系列化和反系列化的例子, 都是一层对象嵌套: 例如Group 包含 User。 public class User { }public class Group { } 我想问的是fastjson支持多层对象嵌套的系列化和反...

一千年前的人 ⋅ 2012/05/20 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

来自一个优秀Java工程师的简历

写在前面: 鉴于前几天的一份前端简历,虽然带着很多不看好的声音,但却帮助了很多正在求职路上的人,不管评论怎么说,我还是决定要贴出一份后端的简历。 XXX ID:357912485 目前正在找工作 ...

颖伙虫 ⋅ 18分钟前 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部