Wprowadzenie.
We wpisie przedstawiłem w jaki sposób dokonać konwersji z typów z Pythona do formatu JSON. JSON jest to plik tekstowy, który ma zdefiniowaną strukturę typów danych niezależną od konkretnego języka programowania. Służy przede wszystkim do wymiany danych między programami / aplikacjami, które wykorzystują różne języki programowania.
Zakres artykułu.
- Konwersja z Dict do JSON
- Konwersja z Dict do pliku jako JSON
Konwersja z Dict do JSON
Pierwszym krokiem, jaki należy wykonać, abyśmy mogli pracować w Pythonie z danymi w formacie JSON, musimy zaimportować pakiet json.
import json
Stwórzmy sobie teraz prosty słownik z kilkoma danymi.
myDict = { "name": "Dominik", "age": 28, "married": True, "city": "Warsaw", "favorite_colors": ["green", "blue"] }
W celu przekonwertowania typu dictionary do formatu JSON musimy skorzystać z metody dumps(). Metoda ta jako pierwszy argument przyjmuje typ danych. W naszym przypadku będzie to słownik. Metoda dumps zwraca nam obiekt typu str. W celu zobaczenia, jak wygląda przekonerwtowany format, zwróconą wartość wyświetlmy za pomocą printa.
myJson = json.dumps(myDict) print(myJson)
Cały kod programu wygląda następująco.
import json myDict = { "name": "Dominik", "age": 28, "married": True, "city": "Warsaw", "favorite_colors": ["green", "blue"] } myJson = json.dumps(myDict) print(myJson)
Wynik działa prezentuje się następująco.
Aby wyświetlenie wyniku prezentowało się w czytelniejszy dla nas sposób, metoda dumps() przyjmuje jeszcze między innymi argument o nazwie indent, który definiuje wielkość wcięcia formatowania stringu dla kolejnych typów danych. Dodatkowo możemy jeszcze skorzystać z argumentu sort_keys, który jeśli ustawimy na True to kolejne typy danych, zostaną posortowane alfabetycznie.
myJsonPretty = json.dumps(myDict, indent = 4, sort_keys=True) print(myJsonPretty)
Cały kod w tym przypadku wygląda następująco.
import json myDict = { "name": "Dominik", "age": 28, "married": True, "city": "Warsaw", "favorite_colors": ["green", "blue"] } myJsonPretty = json.dumps(myDict, indent = 4, sort_keys=True) print(myJsonPretty)
A efekt prezentuje się tak.
Konwersja z Dict do pliku jako JSON
Jeżeli chcielibyśmy przesłać nasze dane w formacie JSON, najprostszym sposobem jest umieszczenie stringu w pliku tekstowym. Python w tym celu udostępnia nam bardzo podobną metodę jak poprzednio i jest nią dump(). Metoda ta poza argumentem z typem danych przyjmuje jeszcze argument w postaci obiektu do pliku do którego ma zostać zapisany przekonwertowany string.
with open('myTxtFile.json', 'w') as jsonFile: json.dump(myDict, jsonFile)
Cały kod prezentuje się następująco.
import json myDict = { "name": "Dominik", "age": 28, "married": True, "city": "Warsaw", "favorite_colors": ["green", "blue"] } with open('myTxtFile.json', 'w') as jsonFile: json.dump(myDict, jsonFile)
A plik prezentuje się w taki sposób.
Tak jak w poprzednim przypadku plik JSON możemy sformatować przy pomocy argumentu indent.
with open('myPrettyTxtFile.json', 'w') as jsonFile: json.dump(myDict, jsonFile, indent = 4)
Kod w tym przypadku wygląda następująco.
import json myDict = { "name": "Dominik", "age": 28, "married": True, "city": "Warsaw", "favorite_colors": ["green", "blue"] } with open('myPrettyTxtFile.json', 'w') as jsonFile: json.dump(myDict, jsonFile, indent = 4)
A plik tekstowy prezentuje się w taki sposób.