[本文出自天外归云的博客园]

用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逐层解析器相关推荐

  1. SpringBoot--网上商城项目(自定义的参数解析器、购物车后台前台功能、商品详情页)

    目录 一.自定义的参数解析器 关于Mybatis-plus时间字段代码生成问题 报错信息:Caused by: java.lang.IllegalStateException: No typehand ...

  2. spring MVC使用自定义的参数解析器解析参数

    目录 写在前面 编写自定义的参数解析器解析请求参数 项目结构 定义注解 实体类 controller 定义参数解析器 注册参数解析器 启动项目 发起请求查看结果 写在前面 如果还有小伙伴不知道spri ...

  3. 自定义json格式-解析为对象

    Json解析-harmony ps:result为自定义格式的json字符串,,有更好的方法欢迎教导 1. HiJson 访问中央仓库找到hijson,找到用的多的版本复制gradle类型的依赖,将依 ...

  4. springmvc自定义参数解析器

    由于开发中一般使用参数提交方式是json格式,对于单个参数的传递使用无法接收只能自定义参数解析器处理 springmvc的自定义参数解析器实现HandlerMethodArgumentResolver ...

  5. 白鹭egret的自定义素材解析器

    下午好 大家在接触白鹭的过程中,一定会遇到资源加载的问题. 首先坦白最近遇到的瓶颈: 之前的项目虽然资源很多,但是资源相对比较固定,两个版本中更改的图库数据较少,所以在使用中可以使用打包图集和资源缓存 ...

  6. 开发 Spring 自定义视图和视图解析器

    Spring 视图和视图解析器简介 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring ...

  7. springmvc十七:自定义视图和自定义视图解析器

    自定义视图和视图解析器的步骤: 1).编写自定义的视图解析器,和视图实现类. 自定义的视图要实现View对象 public class MyView implements View{@Override ...

  8. SpringBoot 错误页面使用、自定义错误页、自定义异常、自定义异常解析器

    在SpringBoot使用错误页面非常的简单 一. 错误页面使用 二. 自定义错误页 三.自定义异常 四.自定义异常解析器 一. 错误页面使用 只需要在templates里创建一个error文件夹,然 ...

  9. erlang xml 解析_用yecc(erlang)写一个json解析器

    昨天写了个json的解析器.其实yecc早看过了,只是那时对自己要求太高,想一下子写个小语言.然后大脑就陷入混乱... 后来注意力转移了.就不那么急着去开发些难道大的.今天回来一看,觉得都理解了,实践 ...

最新文章

  1. if函数判断单元格颜色_13个动图小技巧与5个常用函数,学会它们,小白也能变大神...
  2. linux centos7 NetworkManager 命令行网络配置工具 nmcli 简介
  3. 毒鸡汤真相,你被骗了多少年?
  4. break、continue和return的使用
  5. 线程阻塞和挂起(网络收集)
  6. 文件夹修改名字 matlab,matlab用 movefile更改文件夹内文件名字
  7. 【tensorflow】常量张量的初始化
  8. C语言手写二叉树(链式存储结构)
  9. win11可以支持win10驱动吗 Windows11更新驱动的步骤方法
  10. java面试 线程_Java面试题(线程)
  11. en55032最新标准下载_欧盟多媒体设备CE认证将使用新标准EN55032
  12. 基于Android的家庭学校联系平台APP开发与实现
  13. Docker环境安装
  14. 学历真的重要吗?当然非常非常非常重要。
  15. 美团笔试.最大子段和
  16. t-SNE算法解析与简单代码实现
  17. JanusGraph配置
  18. java super是什么意思_Java中super是什么意思?
  19. matlab使用记录--读取当前文件夹所有文件、找到最新创建的文件、app designer打开文件选择窗口
  20. 吉利汽车资深总工程师刘卫国:智能驾驶汽车核心技术之控制器

热门文章

  1. ASP.NET模拟其他用户进行关机
  2. 基于CSS3实现元素宽度向两侧延伸
  3. Python 列表 count( )方法
  4. TensorFlow2.0(三)--Keras构建神经网络回归模型
  5. C++ int型与char型辨析
  6. Mean Shift算法(3)在OpenCV上的实现——图像分割PyrMeanShiftFiltering
  7. python 从大到小循环_python算法(3) 插入排序
  8. mysql导致根目录爆满_因为根目录磁盘满了,我移动数据和软件造成mysql启动不了,查原因mysql.sock不在了...
  9. sqllite查询数据量_详解SQLite中的查询规划器
  10. [LOJ#6053]简单的函数 题解