Есть два способа, которыми вы можете «декодировать» json с помощью Python, после вы разбили его на dicts и списки с помощью библиотеки json.
Во-первых, доступ к нему по индексам, например:
url_list = [t['entries'][0]['url'] for t in data['windows'][0]['tabs']]
Или вы можете перебрать его древовидную структуру. Приведенный ниже пример функции не является универсальным, он просто показывает, что вам нужно по-разному рассматривать три разных типа «узлов» JSON при анализе дерева. «Значение» ключа может быть данными, списком дочерних узлов без ключей или диктовкой, которая по сути является новым объектом JSON. Вы не можете просто пройти проверку каждого узла на предмет его имени, данных и потомков, как если бы вы использовали обычное дерево.
def depthFirstSearch(self, jsonobj, target, parentKey=None):
if isinstance(jsonobj, dict):
for key, value in jsonobj.items():
if isinstance(value, (dict, list)):
self.depthFirstSearch(value, target, key)
else: # "data" node
if key == target and parentKey not in self.parentsToExclude:
self.results.append(value)
self.parents[parentKey] += 1
if isinstance(jsonobj, list):
for value in jsonobj:
#lists don't have keys, pass along key from last dict
self.depthFirstSearch(value, target, parentKey)