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):
python json字符串转数组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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论