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读取键盘输入的2种方法
Jun 16 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
快速入手Python字符编码
Aug 03 Python
python实现数据库跨服务器迁移
Apr 12 Python
windows下python和pip安装教程
May 25 Python
python os模块简单应用示例
May 23 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Python函数中的可变长参数详解
Sep 12 Python
PyQt5实现画布小程序
May 30 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
Pytorch 实现变量类型转换
May 17 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
用mysql内存表来代替php session的类
2009/02/01 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
python实现图像外边界跟踪操作
2020/07/13 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
内勤岗位职责
2015/02/10 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
运动会报道稿大全
2015/07/23 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
防止web项目中的SQL注入
2021/12/06 MySQL
我去timi了,一起去timi是什么意思?
2022/04/13 杂记