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模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
python中引用与复制用法实例分析
Jun 04 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
浅谈Python 对象内存占用
Jul 15 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
简单了解如何封装自己的Python包
Jul 08 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
常用PHP封装分页工具类
2017/01/14 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
javascript脚本调试方法小结
2008/11/24 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
react-router中的属性详解
2017/06/01 Javascript
angular动态表单制作
2018/02/23 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
试用期自我鉴定范文
2014/03/20 职场文书
颁奖典礼主持词
2014/03/25 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
捐助感谢信
2015/01/22 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
详细介绍python操作RabbitMq
2022/04/12 Python
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技