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实现文本文件合并
Dec 29 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
python字符串string的内置方法实例详解
May 14 Python
详解django中使用定时任务的方法
Sep 27 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 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
服务器web工具 php环境下
2010/12/29 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
python的dict判断key是否存在的方法
2020/12/09 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
Yahoo-PHP面试题1
2016/07/20 面试题
小学安全教育材料
2014/02/17 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
我是特种兵观后感
2015/06/11 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
Python字典的基础操作
2021/11/01 Python