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 list语法学习(带例子)
Nov 01 Python
Python批量按比例缩小图片脚本分享
May 21 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
python+django加载静态网页模板解析
Dec 12 Python
python统计中文字符数量的两种方法
Jan 31 Python
Python pip替换为阿里源的方法步骤
Jul 02 Python
Python列表切片常用操作实例解析
Dec 16 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
python打开文件的方式有哪些
Jun 29 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP对象实例化单例方法
2017/01/19 PHP
php头像上传预览实例代码
2017/05/02 PHP
php写app用的框架整理
2019/09/29 PHP
js下弹出窗口的变通
2007/04/18 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
python进阶教程之文本文件的读取和写入
2014/08/29 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Python使用进程Process模块管理资源
2020/03/05 Python
关于python中的xpath解析定位
2020/03/06 Python
django中嵌套的try-except实例
2020/05/21 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
好人好事演讲稿
2014/09/01 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android