本章主要介绍用java实现扁平化输出json所有节点key/value(包含所有内层子节点)

1.json结构

目的输出bill_list下的datalist里的子节点key/value

2.实现代码

 public static Map<String, Object> jsonConvertMap(JSONObject json){
Map<String, Object> map = new HashMap<>();
if(json != null && json.size() > 0){
for(String k : json.keySet()){
Object v = json.get(k);
if(v instanceof JSONArray){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Iterator<Object> it = ((JSONArray)v).iterator();
while(it.hasNext()){
JSONObject json2 = (JSONObject) it.next();
list.add(jsonConvertMap(json2));
}
map.put(k, list);
} else if(v instanceof JSONObject){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
JSONObject child = (JSONObject) v;
for(String stk: child.keySet()){
Object value = child.get(stk);
if(value instanceof JSONArray){
Iterator<Object> it = ((JSONArray)value).iterator();
while(it.hasNext()){
JSONObject json2 = (JSONObject) it.next();
list.add(jsonConvertMap(json2));
}
}else{
map.put(stk, value.toString());
}
}
if(list.size() > 0){
for(int m = 0;m<list.size();m++){
Map<String, Object> chMap = list.get(m);
for(String chKey : chMap.keySet()){
map.put(chKey, chMap.get(chKey).toString());
}
}
}
}else{
map.put(k, v);
}
}
}
return map;
}

java 扁平化输出json所有节点key/value的更多相关文章

  1. Java用Gson遍历json所有节点

    <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</ar ...

  2. Java用Jackson遍历json所有节点

    <!-- jackson begin --> <dependency> <groupId>com.fasterxml.jackson.core</groupI ...

  3. 将扁平化的JSON属性转换为嵌套的JSON

    需要将如下JSON {"a":"a","b":"b","c.e":"e",&qu ...

  4. js 扁平化输出数组

    1.使用数组的flat方法 [1,2,[3,[4,5]]].flat(Infinity) //[1, 2, 3, 4, 5] 2.实现方式二: var arr = [[1, 2, 23], [13, ...

  5. Java - 格式化输出JSON字符串的两种方式

    目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...

  6. EasyUI tree 异步树与采用扁平化实现的同步树

    所谓好记性不如烂笔头,为了以防忘记,才写下这篇博客,废话不多.. 异步树: tips:   可以采用easyui里的原始数据格式,也可以采用扁平化的数据格式. 使用场景: 当菜单模块数量庞大或者无限极 ...

  7. [转]easyui tree 模仿ztree 使用扁平化加载json

    原文地址:http://my.oschina.net/acitiviti/blog/349377 参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.h ...

  8. PHP、Java输出json格式数据

      PHP 输出json. $result = mysql_query($sql); //查询结果 $users=array(); $i=0; while($row=mysql_fetch_array ...

  9. json数据扁平化处理

    json数据扁平化处理 /* * name:json数组拉平处理 * data:json对象或者数组 * k:前面开始可传空 */ function expandJsonTool(data, k) { ...

随机推荐

  1. ORDER BY 高级用法之CASE WHEN

    今天在公司查看一段sql SP代码,发现了一段比较奇怪的代码. 大概长这样子: Select * from tableA ORDER BY ColA , CASE END 小弟才疏学浅,咋一看到代码以 ...

  2. saas模式

    SaaS是Software-as-a-service(软件即服务).SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件.硬件运作平台,并负责所有前期的实施.后期的维护等一系列服务,企业无需购 ...

  3. 五:Jquery-demo

    一:多选框的全选与全不选 1.遍历:使用each(); $("#checkallbox").click(function(){ var isChecked = this.check ...

  4. SpringBoot(八) Caching (更新中...)

    缓存配置 在springboot的主类添加注解@EnableCaching启用缓存支持 参考文档 33. Caching spring framework >>> 8. Cache ...

  5. HTTP2 帧基础知识以及Header、CONTINUATION、DATA帧相关资料:

    HTTP2于2015年2月28日正式通过IETF组织批准发布,正式定稿.有关它的内容可以参考:  HTTP2 概述  http://www.cnblogs.com/ghj1976/p/4552583. ...

  6. 第二十三天- 模块 re

    # 1. 正则表达式 # 元字符# . 除了换行符外任意字符# \w 数字 字母 下划线# \s 空白符# \b 单词的末尾# \d 数字# \W 除了数字 字母 下划线# \D 除了数字# \S 除 ...

  7. CentOS7系列--1.2CentOS7基本设置

    CentOS7基本设置 1. 查看相关信息 1.1. 查看系统信息 1.1.1. 查看系统位数 方法1: [root@centos7 ~]# uname -a Linux centos7.smartm ...

  8. srop实战

    前言 srop 的作用比较强,在条件允许的情况下,尽量使用它.题目来自于 i春秋的一个比赛. 题目链接: https://gitee.com/hac425/blog_data/blob/master/ ...

  9. redis sortedSet

    zset 和set 相比: zset 类型和set类型一样,不允许有重复的元素.zset是有序的,zset 有一个double类型的分数,这个分数可以重复,zset正是通过这个分数对集合中的元素从小到 ...

  10. ES6-Generator

    Generator 关键词:状态机,遍历器,同步方式写异步方法 基本概念 形式上,Generator函数是一个普通函数,但是有两个特征. function关键字与函数名之间有一个星号. 二是,函数体内 ...