Pobieranie wartości z JSONa za pomocą Pythona

0

Dzień dobry, cześć wszystkim!
Niedawno rozpocząłem przygodę z Pythonem, głownie siedziałem w webowych językach oraz JavaScript, teraz czas na Pythona i trzeba przyznać, że jest spoko językiem, ale nie o tym teraz mowa.

Mam problem z pobieraniem wartości z pliku JSON https://pastebin.com/QgG1sD18 za pomocą Pythona. Udało mi się to zrealizować w JavaScripcie, ale teraz mam za zadanie zrobić to w Pythonie.

Mianowicie zadanie polega na tym by pobrać wszystkie Price a raczej ich wartości.
W JS robiłem to tak: sprawdź czy zawiera attachments>jeżeli tak to sprawdź czy posiada fields>jeżeli tak to sprawdź czy posiada price i weź value>push do tablicy wyników.
Tu wklejam JShttps://pastebin.com/t4dwQ195

Nie potrafię za bardzo poruszać się po tym konkretnym JSONie przez złożoność tablic i obiektów. Ucząc się na innych przykładach potrafiłem konstruować warunki, iterować itp. tu nie. Tym bardziej złączając to do "kupy". Tutaj udało mi się zrobić tylko tyle:

import json
from pprint import pprint


data = json.load(open('\json\\2016-12-11.json'))



field_list = data[1]['attachments'][0]['fields']

for d in field_list:
        pprint(d['value'])

Powyższy kod wypisuje mi z pliku JSON z drugiego attachments i 1 fields wszystkie value. Jest to za bardzo na sztywno.

for a in data:
        print(a['attachments'][0]['fields'][0]['value'])

Natomiast ten iteruje każdy attachments i wypisuje pierwszy fields i z niego 1 value. To już bliższe rozwiązanie, aczkolwiek niekażdy attachments zawiera fields i niekażdy fields ma tyle samo value. I tu mam problem w zrozumieniu jak sie po tym poruszać i złączyć warunki, pętle i tworzenie klucze w jedną całość. Prosze o pomoc. Będę wdzięczny za wszelkie podpowiedzi i rozwianie moich niejasności ;)

0
for row in data:
    if 'attachments' in row:
        for attachment in row['attachments']:
            if 'fields' in attachment:
                for field in attachment['fields']:
                    pass

Tak to można między innymi zrobić. Nie wiem czy są lepsze rozwiązania. W każdym razie podałem przykład działającego kodu ale źle napisanego. Nie powinno się tak zagnieżdżać bo jest to nieczytelne, zadanie domowe dla ciebie to rozbić to na funkcje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1