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 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python从入门到精通(DAY 1)
Dec 20 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
python修改字典键(key)的方法
Aug 05 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
python爬虫如何解决图片验证码
Feb 14 Python
Python如何把不同类型数据的json序列化
Apr 30 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
Vue数据双向绑定的深入探究
2018/11/27 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
Python导入oracle数据的方法
2015/07/10 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
药学专业毕业生求职信
2013/10/20 职场文书
大学军训感想
2014/02/12 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android
利用Apache Common将java对象池化的问题
2022/06/16 Servers