json递归查询
主体:
class json_search():
'''递归查询依赖key'''
def search_key(self,data,key):
self.data = data
self.key_value = []
if self.data_json(data) != False:
self.search(self.data,key)
return self.key_value
else:
return False def data_json(self,data):
''' 入参判断'''
'''json是str子类'''
if isinstance(data,str):
try:
self.data=json.loads(data,encoding='utf-8')
except ValueError :
print("value error input")
return False
elif isinstance(data,dict):
return self.data
else:
return False
def search(self,data,key):
for i in data:
if i == key:
self.key_value.append(data[i])
elif isinstance(data[i],dict):
self.search(data[i],key)
elif isinstance(data[i],list):
for j in data[i]:
if isinstance(j,dict):
self.search(j,key) return self.key_value
示例:
search_json=json_search()
{
"status": 0,
"data": {
"hello": [2, 3, 4],
"banner": [{
"id": 2262,
"type": 6,
"type_id": 330,
"name": "\u524d\u7aef\u4e0b\u4e00\u4ee3\u5f00\u53d1\u8bed\u8a00TypeScript \u4ece\u57fa\u7840\u5230axios\u5b9e\u6218",
"pic": "http://szimg.mukewang.com/5cf721df09fc2be500000000.jpg",
"links": ""
},
{
"id": 1648,
"type": 6,
"type_id": 169,
"name": "Python3\u5165\u95e8\u673a\u5668\u5b66\u4e60 \u7ecf\u5178\u7b97\u6cd5\u4e0e\u5e94\u7528",
"pic": "http://szimg.mukewang.com/5d0ed2d9085bd6ed09000300.jpg",
"links": ""
}, {
"id": 1875,
"type": 6,
"type_id": 316,
"name": "\u4ece\u57fa\u7840\u5230\u5b9e\u6218 \u624b\u628a\u624b\u5e26\u4f60\u638c\u63e1\u65b0\u7248Webpack4.0",
"pic": "http://szimg.mukewang.com/5d0ed2ca086a9e6f09000300.jpg",
"links": ""
}, {
"id": 1999,
"type": 6,
"type_id": 342,
"name": "\u7eaf\u6b63\u5546\u4e1a\u7ea7\u5e94\u7528 Node.js Koa2\u5f00\u53d1\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u670d\u52a1\u7aef",
"pic": "http://szimg.mukewang.com/5ceb5d370955f30f09000300.jpg",
"links": ""
}, {
"id": 2158,
"type": 99,
"type_id": 0,
"name": "Spring Cloud\u5fae\u670d\u52a1\u5f00\u53d1\u5b9e\u8df5",
"pic": "http://img2.mukewang.com/5d088c4009bbebc009000300.jpg",
"links": "https://www.imooc.com/read/37"
}, {
"id": 1709,
"type": 6,
"type_id": 354,
"name": "Node.js\u5f00\u53d1\u4eff\u77e5\u4e4e\u670d\u52a1\u7aef \u6df1\u5165\u7406\u89e3RESTful API",
"pic": "http://szimg.mukewang.com/5d0ed27508f7d96909000300.jpg",
"links": ""
}
],
"pic": [{
"pic": "http://www.imooc.com/static/img/andriod/pic/actual_day@3x.png",
"pic_night": "http://www.imooc.com/static/img/andriod/pic/actual_night@3x.png",
"type": 2
}, {
"pic": "http://www.imooc.com/static/img/andriod/pic/path_day@3x.png",
"pic_night": "http://www.imooc.com/static/img/andriod/pic/path_night@3x.png",
"type": 6
}, {
"pic": "http://www.imooc.com/static/img/andriod/pic/question_day@3x.png",
"pic_night": "http://www.imooc.com/static/img/andriod/pic/question_night@3x.png",
"type": 3
}, {
"pic": "http://www.imooc.com/static/img/andriod/pic/note_day@3x.png",
"pic_night": "http://www.imooc.com/static/img/andriod/pic/note_night@3x.png",
"type": 4
}, {
"pic": "http://www.imooc.com/static/img/andriod/pic/discover_day@3x.png",
"pic_night": "http://www.imooc.com/static/img/andriod/pic/discover_night@3x.png",
"type": 5
}]
},
"errorCode": 1001,
"errorDesc": "\u6210\u529f",
"timestamp": 1561269343507
}
if __name__ == "__main__":
print(search_json.search_key(data,"id"))
json递归查询的更多相关文章
- 无限级分类及生成json数据
第一步,先去数据库查询类别数据,然后交给生成json数据的函数处理,代码如下: /*生成类别JSON数据*/ public function wirteJson(){ $dataInfo = \thi ...
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. 不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...
- (转载)JavaScript递归查询 json 树 父子节点
在Json中知道某个属性名,想要确定该属性在Json树具体的节点,然后进行操作还是很麻烦的 可以用以下方法找到该属性所在的节点,和父节点 <!DOCTYPE html> <html ...
- MSSQLServer中组织或分类表的设计及其递归查询
开篇:项目中用到上下级从属关系的太多太多了,如:组织.分类.行政区域,这里不再一一介绍,遇到这种的如何去进行数据库表的设计及其应用的,个人对往期项目中所涉及到的进行了一些总结. 数据库表设计:表字段一 ...
- json树递归js查询json父子节点
上代码,直接另存为html打开,看console控制台就可以看到效果了 <!DOCTYPE html> <html lang="en"> <head& ...
- XML和JSON
XML XML(EXtensible Markup Language),可扩展标记语言 特点 XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用: 数据交互 配置应用程序和网站 ...
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
随机推荐
- Ubuntu下配置IP地址
17.10版本之前: Ubuntu的网卡配置文件跟CentOS的不一样,Ubuntu的网卡配置文件是/etc/network/interfaces.我们用vi /etc/network/interfa ...
- Linux & Go & Vscode & 插件
Linux Deepin 安装Go 安装Go环境 sudo apt-get install golang 验证一下: 输入 $ go env 输出 GOARCH="amd64" G ...
- php 重复问题
结果: 结论: 尽量在方法内用变量去接受重复的参数或重复的方法/结果,消耗的时间积少成多
- LeetCode 49: 字母异位词分组 Group Anagrams
LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...
- .NET Application,Session,Cookie,ViewState,Cache对象用法
作用域 保存地址 生命周期Application 应用程序 服务器内存 IIS启动Session 整个站点 服务器内存 Session到时 默认20分钟Cashe 应用程序 服务器内存 应用程序的周期 ...
- SpringCloud的入门学习之概念理解、Ribbon负载均衡入门
1.Ribbon负载均衡,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端.负载均衡的工具. 答:简单的说,Ribbon是Netflix发布的开源项目,主要功能 ...
- Centos7 下 PHP 添加缺少的组件 sockets 和 openssl
环境是 centos7 + nginx 1.14 + php 7.2.18,由于新增邮件发送功能,使用的是 socket 通讯的方式,需要开启 php 的 sockes 和 openssl 扩展 安装 ...
- 立 Flag
行动目标 立Flag时间 计划开始时间 开始时间 行动寄语 通关目标 打卡1 打卡2 打卡3 打卡4 打卡5 打卡6 C# 7.0 核心技术指南 2019-11-1 1号 1号 打好C#基础 看完.实 ...
- Web前端基础(10):JavaScript(四)
1. 伪数组arguments arguments代表的是实参.有个讲究的地方是:arguments只在函数中使用. 1.1 返回参数个数 返回函数实参的个数:arguments.length 例子: ...
- Linux-shell学习笔记1
1.检查 /etc/shells 这个文件可以得到有多少可用的shell,一般有一下几个: /bin/sh (已经被 /bin/bash 所取代) /bin/bash (就是 Linux 默认的 sh ...