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

用python3对json内容逐层进行解析,拿中国天气网的接口返回数据测试,代码如下:

# -*- coding: utf-8 -*-
import operator as op
from collections import defaultdict class Json(object): def __init__(self, json: str):
sth = eval(json)
load = lambda sth: sth if op.eq(type(sth).__name__, dict.__name__) else None
self.json_dict = load(sth)
self.ret_j = defaultdict(dict)
self.analyze(self.json_dict) def analyze(self, j_dict: dict, lvl=0) -> None:
lvl += 1
for 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 requests
except:
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. Spring boot中自定义Json参数解析器

    转载请注明出处... 一.介绍 用过springMVC/spring boot的都清楚,在controller层接受参数,常用的都是两种接受方式,如下 /** * 请求路径 http://127.0. ...

  2. 一步一步自定义SpringMVC参数解析器

    随心所欲,自定义参数解析器绑定数据. 题图:from Zoommy 干货 SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上. 自定义一个参数解析器需要实现 ...

  3. php 解析json失败,解析为空,json在线解析器可以解析,但是json_decode()解析失败(原)

    $str2='{"code":200,"datas":{"id":1,"coupon_id":"123&quo ...

  4. 自定义HandlerMethodArgumentResolver参数解析器和源码分析

    在初学springmvc框架时,我就一直有一个疑问,为什么controller方法上竟然可以放这么多的参数,而且都能得到想要的对象,比如HttpServletRequest或HttpServletRe ...

  5. 自定义springmvc参数解析器

    实现spring HandlerMethodArgumentResolver接口 通过使用@JsonArg自定义注解来解析json数据(通过fastjson的jsonPath),支持多个参数(@Req ...

  6. 实现自定义的参数解析器——HandlerMethodArgumentResolver

    1.为什么需要自己实现参数解析器 我们都知道在有注解的接口方法中加上@RequestBody等注解,springMVC会自动的将消息体等地方的里面参数解析映射到请求的方法参数中. 如果我们想要的信息不 ...

  7. Python3基础 json.loads 解析json格式的数据,得到一个字典

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. Python3之JSON数据解析实例:新闻头条 --Python3

    一.接口相关 数据服务商:聚合数据(https://www.juhe.cn/) API部分文档: 完整API文档下载:https://files.cnblogs.com/files/qikeyishu ...

  9. [转载]开发 Spring 自定义视图和视图解析器

    原文出处 http://www.ibm.com/developerworks/cn/java/j-lo-springview/ 概述 Spring 3.0 默认包含了多种视图和视图解析器,比如 JSP ...

随机推荐

  1. Sensor传感器(摇一摇)

    <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content ...

  2. Java开发人员必须掌握的Linux命令(一)

    子曰:"工欲善其事,必先利其器." 1.登录服务器SSH命令 简单说,SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机, ...

  3. Java动态追踪技术探究

    引子 在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话: “Debug一下吧.” “线上机器,没开Debug端口.” “看日 ...

  4. PLSQL Developer

    1 intall oracle11gex start OracleXEClrAgent start  OracleXETNSListener 2 install C:\Dev Tool\instant ...

  5. 像素鸟 游戏开发教程 FlappyBird Game development tutorial

    像素鸟 游戏开发教程 FlappyBird Game development tutorial 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...

  6. centos 6 秘钥分发

    http://www.cnblogs.com/chensiqiqi/p/6554055.html

  7. ES-常见搜索方式

    1.query string search 2.query DSL 3.query filter 4.full-text search 5.phrase search 6.highlight sear ...

  8. react-native开源组件react-native-wechat学习

    转载链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-open-source-components-r ...

  9. POI HSSFCellStyle 设置 Excel 单元格样式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

  10. emSecure Use Digital Signatures to protect your products

    emSecure Use Digital Signatures to protect your products emSecure is an RSA based software solution ...