python json 递归打印所有json子节点信息的例子


Posted in Python onFebruary 27, 2020

我就废话不多说了,直接上代码吧

def json_txt(self, dic_json):
 #self.debug_print("json_txt")
 if isinstance(dic_json, dict): # 判断是否是字典类型isinstance 返回True false
  for key in dic_json:
   #dic_json = json.loads(s)
   s = dic_json[key]
   #self.debug_print(str(len(s)) + " type:" + str(type(s)))
   t=str(type(s))
   if t.startswith("<class 'list'>"):
    for i in range(0, len(s)):
     self.debug_print("%s %d:" % (key, i))
     self.json_txt(s[i])
   else:
    self.debug_print("%s: %s" % (key, s))
 else:
  self.debug_print("else")

补充拓展:python求json某层节点的和实例

如下所示:

import json

from collections import Mapping

import json

def dict_generator(indict, pre=None):
pre = pre[:] if pre else []
if isinstance(indict, dict):
for key, value in indict.items():
if isinstance(value, dict):
if len(value) == 0:
yield pre+[key, ‘{}']
else:
for d in dict_generator(value, pre + [key]):
yield d
elif isinstance(value, list):
if len(value) == 0:
yield pre+[key, ‘[]']
else:
for v in value:
for d in dict_generator(v, pre + [key]):
yield d
elif isinstance(value, tuple):
if len(value) == 0:
yield pre+[key, ‘()']
else:
for v in value:
for d in dict_generator(v, pre + [key]):
yield d
else:
yield pre + [key, value]
else:
yield indict

def recursive_findall(obj, key, paths=None):
ret = []
if not paths:
paths = []
if isinstance(obj, Mapping):
for k, v in obj.iteritems():
found_items = recursive_findall(v, key, paths=(paths + [(‘k', k)]))
ret += found_items
elif isinstance(obj, (list, tuple)):
for i, v in enumerate(obj):
found_items = recursive_findall(v, key, paths=(paths + [(‘i', i)]))
ret += found_items
else:
if key(obj):
ret.append((paths, obj))
return ret

ret_dict = {
“data”:[
{
“email”:"",
“repoCommits”:[
{
“branchCommitLine”:[
{
“submitLine”:1
},
{
“submitLine”: 1
}]},
{
“branchCommitLine”: [
{
“submitLine”: 1
},
{
“submitLine”: 1
}]}]
},
 {
  "email": "",
  "repoCommits": [
   {
    "branchCommitLine": [
     {
      "submitLine": 1
     },
     {
      "submitLine": 1
     }]},
   {
    "branchCommitLine": [
     {
      "submitLine": 1
     },
     {
      "submitLine": 1
     }]}]

 }



    ]
   }

if name == ‘main':

all_socre = 0
for da in ret_dict["data"]:
 if da.has_key("repoCommits"):
  for repo in da["repoCommits"]:
   if repo.has_key("branchCommitLine"):
    for branch in repo["branchCommitLine"]:
     if branch.has_key("submitLine"):
      all_socre += int(branch["submitLine"])
     else:
      continue
   else:
    continue
 else:
  continue
ret = dict_generator(ret_dict)
print(ret)
for i in ret:
 print i[-1]

以上这篇python json 递归打印所有json子节点信息的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过正则查找微博@(at)用户的方法
Mar 13 Python
讲解Python中运算符使用时的优先级
May 14 Python
python实现文件快照加密保护的方法
Jun 30 Python
深入浅析python定时杀进程
Jun 06 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
用python生成1000个txt文件的方法
Oct 25 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python打开音乐文件的实例方法
Jul 21 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 #Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 #Python
matlab中imadjust函数的作用及应用举例
Feb 27 #Python
浅析matlab中imadjust函数
Feb 27 #Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 #Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 #Python
pytorch之Resize()函数具体使用详解
Feb 27 #Python
You might like
PHP 第二节 数据类型之数组
2012/04/28 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
vue.js中created方法作用
2018/03/30 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
Python中运行并行任务技巧
2015/02/26 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
人事主管岗位职责
2014/01/30 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
文明城市创建标语
2014/06/16 职场文书
民政工作个人总结
2015/02/28 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL