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的快速过滤处理的主要内容,如果未能解决你的问题,请参考以下文章

快速图像处理过滤器

算法专题之bitmap与布隆过滤器 ----如何快速处理海量数据

go语言快速入门 JSON处理 24

golang快速入门JSON处理

快速处理两个不同的http json响应

快速过滤json数组