项目很多时候需要找到一个层层嵌套的json里面某一个或者几个key的值,这时候就需要遍历整一个json来获得这些值。
因此我封装了一个class,专门给大家来在一个
json中递归查找需要的key的value
,
下面给出
源码
(复制到自己的项目里面引入即可) 下面有介绍
用法
import json
class GetKeyValue(object):
def __init__(self, o, mode='j'):
self.json_object = None
if mode == 'j':
self.json_object = o
elif mode == 's':
self.json_object = json.loads(o)
else:
raise Exception('Unexpected mode argument.Choose "j" or "s".')
self.result_list = []
def search_key(self, key):
self.result_list = []
self.__search(self.json_object, key)
return self.result_list
def __search(self, json_object, key):
for k in json_object:
if k == key:
self.result_list.append(json_object[k])
if isinstance(json_object[k], dict):
self.__search(json_object[k], key)
if isinstance(json_object[k], list):
for item in json_object[k]:
if isinstance(item, dict):
self.__search(item, key)
return
gkv = GetKeyValue(o={'demo': 'show demo'}, mode='j')
gkv = GetKeyValue("{'demo': 'show demo'}", mode='s')
之后,假设需要查找key=demo的值:
print gkv.search_key('demo')
就可以了。
项目很多时候需要找到一个层层嵌套的json里面某一个或者几个key的值,这时候就需要遍历整一个json来获得这些值。因此我封装了一个class,专门给大家来在一个json中递归查找需要的key的value,下面给出源码(复制到自己的项目里面引入即可) 下面有介绍用法# coding:utf8import jsonclass GetKeyValue(object): def __...
import json
# source code URL: https://blog.csdn.net/weixin_42744102/article/details/99722187
class FindKey(object):
def __init__(self, obj):
self.json_object = None
#file = open("/Users/hzp/Desktop/multiwoz/data/multi-woz/delex.json")
#a = json.load(file)
#b = a['SNG01856.json']
#c = open("/Users/hzp/Desktop/test.json",'w')
#c.write(json.dump...
我们要完成的任务是输出JSON字典,并且对其中的每个元素,要输出它的所有父节点。那么很容易想到的做法就是递归解析。
我参考了别人的一些文章和回答,总结了如下的解决方案:
from __future__ import print_function
import json
def dict_generator(indict, pre=None):
pre = pre[:] if pre else []
if isinstance(indict, dict):
for key,
这里使用递归方法来取出所有想要的键
在这之前还需要把json串用json.load方法转换成python的数据结构
obj = {'北京': '北', '南极': '南', '广州': '东', '北极': '北',"四川":{"成都":"中"},"重庆":{"江北":"中"}}
res_list=[]
def revert_dict(obj,value):
return [k for k, v in obj.items() if v == value]
def iterloop(obj:
json格式文件取出所有
key的通用方法(
python)
在接口测试时候,我们难免会遇到接口返回关键字查验,有时由于数据量庞大,手工测试成本很高,但是接口自动化时,发现实际
key值嵌套比较复杂。
demo:
观察如下
json,我们会发现,dic
中嵌套dic,list
中也同样嵌套dic。经过思考,最好的解决方案就是用
递归解决问题。在网上查了许久,没有找到合适的解决方法。自动动手丰衣足食。我给出的代码如下
{ "code":0,
"message":"OK",
"data":{
在
Python 中,可以使用
json 模块
中的
json.loads() 函数将
JSON 字符串转换为
Python 字典。然后可以使用字典
中的键访问
值。
```
python
import
json
json_str = '{"name": "John", "age": 30}'
data =
json.loads(
json_str)
print(data["name"]) # "John"
如果要在项目
中使用
json 数据,可以使用
json.load() 函数从文件
中读取
json 数据。
```
python
import
json
with open("data.
json", "r") as
json_file:
data =
json.load(
json_file)
print(data["name"]) # "John"
如果需要获取多层嵌套的
json的
key的
值,可以通过
递归的方式获取.
```
python
import
json
def get_value_by_
key(
json_data,
key):
if type(
json_data) is dict:
for k,v in
json_data.items():
if k==
key:
return v
else:
return get_value_by_
key(v,
key)
elif type(
json_data) is list:
for item in
json_data:
return get_value_by_
key(item,
key)
else:
return None
json_str = '{"name": "John", "age": 30,"hobby":{"sport":"basketball"}}'
data =
json.loads(
json_str)
print(get_value_by_
key(data,"sport")) # "basketball"
解决报错:“Couldn‘t find a valid ICU package installed on the system. Set the configuration flag System.”
13175
Keras ValueError: No data provided for "dense_1_input". Need data for each key in: ['dense_1_input']
酒732: