Pobieram dane JSON z interfejsu API. Mój skrypt zapisuje te dane i dodaje informacje o tych danych do słownika.
Aby przechowywać dane json, planuję użyć:
with open("data.json", "w") as f:
json.dump(data, f)
Jaki byłby właściwy sposób przechowywania słownika? Czy byłoby właściwe przekonwertować dyktor na format json z
json_str = json.dumps(dict1)
i zapisać go w taki sam sposób jak powyżej?
Odpowiedzi:
4 dla odpowiedzi № 1Powinieneś zapisać dane JSON w Pythonie list
lub dict
, w zależności od struktury danych JSON.
JSON zbudowany jest na dwóch strukturach:
- Zbiór par nazwa / wartość. W różnych językach realizuje się to jako obiekt, rekord, strukturę, słownik, tablicę skrótów, klawisze lista lub tablica asocjacyjna.
- Zamówiona lista wartości. W większości języków, jest to realizowane jako tablica, wektor, lista lub sekwencja.
The json
biblioteka jest często używana do ładowania danych JSON i przechowywania ich w obiekcie Python load
metoda zwróci (rekurencyjnie) język Python lista jeśli dane JSON są podobne [...]
i Python dyktować jeśli dane JSON są podobne {...}
.
Aby odczytać plik JSON zawierający plik {...}
i zapisać jego zawartość do użycia struktury danych słownika:
>>> with open("data.json", "r") as f:
... data = json.load(f)
...
>>> type(data)
<type "dict">
Jeśli plik zawiera listę JSON [...]
następnie:
>>> type(data)
<type "list">
Podobnie podczas odczytu danych JSON z adresu URL:
>>> response = urllib2.urlopen(URL)
>>> data = json.load(response)
Zawsze możesz przekonwertować listę na słownik, na przykład tak:
>>> dataD = dict([i,data[i]] for i in xrange(len(data)))
Robiąc to jednak tracisz informacje o zamówieniu dostarczone przez strukturę tablicy JSON.
1 dla odpowiedzi nr 2
Zwykle używam dyktowania do przechowywania danych i konwertowania z / do JSON tylko w celu przesyłania danych przez Internet. JSON nie jest rodzimym typem dla Pythona, więc lepiej byłoby pracować z natywnymi typami Pythona.