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使用urllib2实现发送带cookie的请求
Apr 28 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
python变量命名的7条建议
Jul 04 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
Python如何将装饰器定义为类
Jul 30 Python
如何用Django处理gzip数据流
Jan 29 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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实现Ftp用户的在线管理的代码
2007/03/06 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
vue源码nextTick使用及原理解析
2019/08/13 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
python数据结构之链表的实例讲解
2017/07/25 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
如何编写python的daemon程序
2021/01/07 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
电工工作职责范本
2014/02/22 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
公司活动总结怎么写
2014/06/25 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技