Python实现多维嵌套JSON、字典、列表、元组的JSON中获取数据

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python实现多维嵌套JSON、字典、列表、元组的JSON中获取
数据
背景:
但他的⽅法只能实现字典、列表、元组循环嵌套的格式中取值,⽽我的实际情况是JSON中还循环嵌套了JSON,于是在他的基础做了⼀些修改实现了我想要的结果。

参考代码:
1#!/usr/bin/python
2#coding:utf-8
3
4import json
5
6def isjson(myjson):
7"""判断是否为json对象"""
8try:
9 json_object = json.loads(myjson)
10except Exception as e:
11return False
12return True
13
14
15def get_target_value(key, dic, tmp_list):
16"""
17 :param key: ⽬标key值
18 :param dic: JSON数据
19 :param tmp_list: ⽤于存储获取的数据
20 :return: list
21"""
22if not isinstance(dic, dict) or not isinstance(tmp_list, list): # 对传⼊数据进⾏格式校验
23return'argv[1] not an dict or argv[-1] not an list '
24
25if key in dic.keys():
26 tmp_list.append(dic[key]) # 传⼊数据存在则存⼊tmp_list
27else:
28for value in dic.values(): # 传⼊数据不符合则对其value值进⾏遍历
29if isinstance(value, dict):
30 get_target_value(key, value, tmp_list) # 传⼊数据的value值是字典,则直接调⽤⾃⾝
31elif isinstance(value, (list, tuple)):
32 _get_value(key, value, tmp_list) # 传⼊数据的value值是列表或者元组,则调⽤_get_value
33elif isjson(value):
34 value1 = json.loads(value)
35 get_target_value(key, value1, tmp_list) #传⼊数据的value值是json字符串,则装载成python对象,并调⽤⾃⾝
36return tmp_list
37
38
39def _get_value(key, val, tmp_list):
40for val_ in val:
41if isinstance(val_, dict):
42 get_target_value(key, val_, tmp_list) # 传⼊数据的value值是字典,则调⽤get_target_value
43elif isinstance(val_, (list, tuple)):
44 _get_value(key, val_, tmp_list) # 传⼊数据的value值是列表或者元组,则调⽤⾃⾝
45elif isjson(val_):
46 value2 = json.loads(val_)
47 get_target_value(key, value2, tmp_list) #传⼊数据的value值是json字符串,则装载成python对象,并调⽤get_target_value。

相关文档
最新文档