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调用zxing库生成二维码图片详解
Jan 10 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
微信跳一跳辅助python代码实现
Jan 05 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
python 公共方法汇总解析
Sep 16 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
pytorch 常用线性函数详解
Jan 15 Python
Python文件操作方法详解
Feb 09 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 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中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
python的类变量和成员变量用法实例教程
2014/08/25 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python如何调用JS文件中的函数
2019/08/16 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
教师档案管理制度
2014/01/23 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
高三家长寄语
2014/04/03 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
国防教育标语
2014/10/08 职场文书
中标通知书范本
2015/04/17 职场文书
刑事辩护词范文
2015/05/21 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
Python获取字典中某个key的value
2022/04/13 Python