Python3自定义json逐层解析器
[本文出自天外归云的博客园]
用python3对json内容逐层进行解析,拿中国天气网的接口返回数据测试,代码如下:
# -*- coding: utf-8 -*- import operator as op from collections import defaultdictclass Json(object):def __init__(self, json: str):sth = eval(json)load = lambda sth: sth if op.eq(type(sth).__name__, dict.__name__) else Noneself.json_dict = load(sth)self.ret_j = defaultdict(dict)self.analyze(self.json_dict)def analyze(self, j_dict: dict, lvl=0) -> None:lvl += 1for k in j_dict:v = j_dict[k]v_type = type(v)try:self.ret_j[lvl][str(j_dict)].append(f"{k}:{v}")except:self.ret_j[lvl][str(j_dict)] = []self.ret_j[lvl][str(j_dict)].append(f"{k}:{v}")if op.eq(v_type.__name__, dict.__name__):self.analyze(v, lvl)elif op.eq(v_type.__name__, list.__name__):for each in v:if op.eq(type(each).__name__, dict.__name__):self.analyze(each, lvl)def get_analysis(self) -> None:print(f"这个json拢共分{len(self.ret_j)}层")print("------")for lvl in self.ret_j:print(f"第{lvl}层解析")for root in self.ret_j[lvl]:print(f"解析内容:{root}")for each in self.ret_j[lvl][root]:print(each)print("------")if __name__ == '__main__':try:import requestsexcept:exit(0)url = "http://forecast.weather.com.cn/napi/h5map/city/101/jQuery1533133004035?callback=jQuery1533133004035"r = requests.get(url)d_r = r.content.decode()json_4_test = d_r[d_r.index("(") + 1:d_r.index(")")]Json(json_4_test).get_analysis()
其中json_4_test是待解析的json字符串。
设计思路:
Python3自定义json逐层解析器相关推荐
- SpringBoot--网上商城项目(自定义的参数解析器、购物车后台前台功能、商品详情页)
目录 一.自定义的参数解析器 关于Mybatis-plus时间字段代码生成问题 报错信息:Caused by: java.lang.IllegalStateException: No typehand ...
- spring MVC使用自定义的参数解析器解析参数
目录 写在前面 编写自定义的参数解析器解析请求参数 项目结构 定义注解 实体类 controller 定义参数解析器 注册参数解析器 启动项目 发起请求查看结果 写在前面 如果还有小伙伴不知道spri ...
- 自定义json格式-解析为对象
Json解析-harmony ps:result为自定义格式的json字符串,,有更好的方法欢迎教导 1. HiJson 访问中央仓库找到hijson,找到用的多的版本复制gradle类型的依赖,将依 ...
- springmvc自定义参数解析器
由于开发中一般使用参数提交方式是json格式,对于单个参数的传递使用无法接收只能自定义参数解析器处理 springmvc的自定义参数解析器实现HandlerMethodArgumentResolver ...
- 白鹭egret的自定义素材解析器
下午好 大家在接触白鹭的过程中,一定会遇到资源加载的问题. 首先坦白最近遇到的瓶颈: 之前的项目虽然资源很多,但是资源相对比较固定,两个版本中更改的图库数据较少,所以在使用中可以使用打包图集和资源缓存 ...
- 开发 Spring 自定义视图和视图解析器
Spring 视图和视图解析器简介 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring ...
- springmvc十七:自定义视图和自定义视图解析器
自定义视图和视图解析器的步骤: 1).编写自定义的视图解析器,和视图实现类. 自定义的视图要实现View对象 public class MyView implements View{@Override ...
- SpringBoot 错误页面使用、自定义错误页、自定义异常、自定义异常解析器
在SpringBoot使用错误页面非常的简单 一. 错误页面使用 二. 自定义错误页 三.自定义异常 四.自定义异常解析器 一. 错误页面使用 只需要在templates里创建一个error文件夹,然 ...
- erlang xml 解析_用yecc(erlang)写一个json解析器
昨天写了个json的解析器.其实yecc早看过了,只是那时对自己要求太高,想一下子写个小语言.然后大脑就陷入混乱... 后来注意力转移了.就不那么急着去开发些难道大的.今天回来一看,觉得都理解了,实践 ...
最新文章
- if函数判断单元格颜色_13个动图小技巧与5个常用函数,学会它们,小白也能变大神...
- linux centos7 NetworkManager 命令行网络配置工具 nmcli 简介
- 毒鸡汤真相,你被骗了多少年?
- break、continue和return的使用
- 线程阻塞和挂起(网络收集)
- 文件夹修改名字 matlab,matlab用 movefile更改文件夹内文件名字
- 【tensorflow】常量张量的初始化
- C语言手写二叉树(链式存储结构)
- win11可以支持win10驱动吗 Windows11更新驱动的步骤方法
- java面试 线程_Java面试题(线程)
- en55032最新标准下载_欧盟多媒体设备CE认证将使用新标准EN55032
- 基于Android的家庭学校联系平台APP开发与实现
- Docker环境安装
- 学历真的重要吗?当然非常非常非常重要。
- 美团笔试.最大子段和
- t-SNE算法解析与简单代码实现
- JanusGraph配置
- java super是什么意思_Java中super是什么意思?
- matlab使用记录--读取当前文件夹所有文件、找到最新创建的文件、app designer打开文件选择窗口
- 吉利汽车资深总工程师刘卫国:智能驾驶汽车核心技术之控制器
热门文章
- ASP.NET模拟其他用户进行关机
- 基于CSS3实现元素宽度向两侧延伸
- Python 列表 count( )方法
- TensorFlow2.0(三)--Keras构建神经网络回归模型
- C++ int型与char型辨析
- Mean Shift算法(3)在OpenCV上的实现——图像分割PyrMeanShiftFiltering
- python 从大到小循环_python算法(3) 插入排序
- mysql导致根目录爆满_因为根目录磁盘满了,我移动数据和软件造成mysql启动不了,查原因mysql.sock不在了...
- sqllite查询数据量_详解SQLite中的查询规划器
- [LOJ#6053]简单的函数 题解