根據key查詢在json中的位置

2021-10-07 23:12:40 字數 1718 閱讀 2153

情景一:有些時候我們將json格式化之後眼睛看到的key的結構是這樣的,但是通過**解析就是找不到這個key

情景二:有些時候我們無法確定json的結構,只能判斷key是否在這個json中,並且返回該key在json中的位置

同時也可以根據value查詢對應位置

```python

import json

import jsonpath

import ast

class handlejson():

def __init__(self, data):

if isinstance(data, str):

try:

self.data = ast.literal_eval(data)

except:

pass

elif isinstance(data, dict):

self.data = data

def __paths(self, data, path=''):

'''用於遍歷json樹

:param data: 原始資料,或者key對應的value值

:param path: key值字串,預設值為''

:return:

'''if isinstance(data, dict):

for k, v in data.items():

tmp = path + "['%s']" % k

yield (tmp, v)

yield from self.__paths(v, tmp)

if isinstance(data, list):

for k, v in enumerate(data):

tmp = path + '[%d]' % k

yield (tmp, v)

yield from self.__paths(v, tmp)

def find_key_path(self, key):

'''查詢key路徑

:param key: 需要查詢路徑的key值

:return: 包含key值路徑的list

'''result =

values =

for path, value in self.__paths(self.data):

if path.endswith("['%s']" % key):

return result, values

def find_value_path(self, key):

'''查詢某個值的路徑

:param key: 需要查詢的值,限制為字串,數字,浮點數,布林值

:return:

'''result =

for path, value in self.__paths(self.data):

if isinstance(value, (str, int, bool, float)):

if value == key:

return result

if __name__ == '__main__':

hj = handlejson(json_data)

key, value = hj.find_key_path('video_list')

print(1111, key, value)

根據JSON資料的key擷取JSON字串

可處理 形式的json資料 把json轉化為字串 var bbb json stringify array 用indexof查詢key在json字串中所在的位置 var a bbb.indexof 15d91690 0804 4e1d b7e6 00029f5a9992 indexof查詢 的位置 ...

HashMap中如何根據key算出元素的儲存位置

jdk7中,根據object型別的key計算出其在陣列中的下標位置,hashmap的資料結構是陣列 鍊錶。由2個方法hash object key 和indexfor int h,int length 來實現。hash 該方法主要是將object轉換成乙個整型。indexfor 該方法主要是將has...

通過Value獲取JSON中對應的KEY

public static string read string txtname,string apiname string json 建立輸入流,讀取excel inputstream is new fileinputstream filename.getabsolutepath jxl提供的wo...