json的快速过滤处理
Posted junke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json的快速过滤处理相关的知识,希望对你有一定的参考价值。
法,偶然灵光一现。如有雷同纯属大家想到一起去了。
自认为处理方式 还是比较快速的,如有更好的方法,还请赐教~
比如现在我有这样的一个json
从图中我们可以大概看出嵌套关系还是比较深的,项目中我们经常遇到这种问题,调一个接口返回一个很长的json,但是数据我们并不像全要,我们想过滤掉这些参数,并且保留json结构。那么怎么办呢?
上图只有json的层级结构,没有体现key的唯一。我再用一个json来开始方法部分
{
"name": "junke",
"pass": "123456",
"data": {
"age": "18",
"idcard": "321321*********",
"money": "100000000000000$",
"detil": {
"cn": "12345",
"usa": "10000"
}
}
}
这个json我想要name,data.money,data.detil.cn
也就是输出json为
{
"name": "junke",
"data": {
"money": "100000000000000$",
"detil": {
"cn": "12345"
}
}
}
那么如何处理呢?
首先我们要保留层级关系 这个很麻烦。
因为json key的唯一性,给我们提供一个很好的解决办法:
首先我们建立一个大map,name 进来直接判断name 地面有子集吗,没有直接创建这个key。
重点来了data.money,data.detil.cn进来了怎么处理呢?
首先data.money进来有子集,首先判断大map中有data这个key吗?并且创建一个临时map,有取出来放入临时map,没有初始化临时map key为data,现在是没有的,这时候创建一个list<map> 其中第一个就是这个临时map,然后money进来,判断临时map有这个key吗,有取出放入临时map,没有初始化临时map
key为money 依此类推。
最后拿到那个list 把最后一个map 放入倒数第二个map的value中 这样一直向前放,直到第一个。这样我们就构成了一个完成map结构。
看代码:
很多东西逻辑都在代码中。
对照代码仔细看看~ 利用list 从后向前插入 可以快速构建一个结构清晰的map 结构。
今天状态不是很好 有点困,文字描述不是很好所以就贴了代码。
如有疑问可以后台联系~
这样的过滤 没有嵌套循环,各循环一次就解决了问题,效率上还是有很大优化的~
以上是关于json的快速过滤处理的主要内容,如果未能解决你的问题,请参考以下文章