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使用爬虫猜密码
Feb 19 Python
Python制作词云的方法
Jan 03 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
python递归函数绘制分形树的方法
Jun 22 Python
Python文件读写常见用法总结
Feb 22 Python
python使用thrift教程的方法示例
Mar 21 Python
python解析yaml文件过程详解
Aug 30 Python
python自定义函数def的应用详解
Jun 03 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
Django项目在pycharm新建的步骤方法
Mar 02 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伪造IP地址和header信息代码实例
2015/04/27 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
js function使用心得
2010/05/10 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python 求10个数的平均数实例
2019/12/16 Python
python使用建议与技巧分享(二)
2020/08/17 Python
Python连接mysql方法及常用参数
2020/09/01 Python
python中如何打包用户自定义模块
2020/09/23 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
一套Java笔试题
2016/08/20 面试题
火车的故事教学反思
2014/02/11 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python
Golang map映射的用法
2022/04/22 Golang