JSON + Python

JSON + Python #1 - wprowadzenie

Poziom trudności
1/5

JSON’a spotkamy na każdym kroku, ścieżki wytyczane przez kolejne fale dorastających w firmach młodych adeptów „IT” usiane są jego plikami. Stworzony by żyło się lepiej i czytelniej. Chciałbym przybliżyć wam odrobinę wiedzy na temat jednego z najpopularniejszych formatów danych.

Kropla historii - czyli czyim synem jest JSON

Na początku lat 2000 komunikacja między serwerem i przeglądarką zdominowana była przez wtyczki Flash lub Java. A któż przy zdrowych zmysłach chciałby ich używać przez resztę życia, skoro można by „wybudować” taką komunikację bezpośrednio w stronę? Na pewno nie Douglas Crockford, który jako pierwszy wyspecyfikował format JSON. Format ten został wystandaryzowany dopiero w 2013 roku i opublikowany cztery lata później. Nazwa pochodzi od JavaScript Object Notation.

Kim jest JSON

JSON jest to format danych niezależny od używanego języka. Pochodzi z JavaScript, ale wiele współczesnych języków programowania ma możliwość generowania i odczytu danych w formacie JSON – w tym oczywiście Python. Pliki w tym formacie mają rozszerzenie .json. Ponadto należy pamiętać, że podczas wymiany danych między przeglądarką a serwerem, przy pomocy protokołu HTTP, dane mogą być tylko tekstem, więc JSON jest ustrukturyzowanym tekstem. Dzięki temu możemy przekonwertować w dowolny obiekt JavaScript na JSON i wysłać JSON na serwer, na którym zostanie on obsłużony w dowolnym języku, który wspiera ten format danych. JSON jest otwartym standardem, dodatkowo czytelnym i (w miarę) przejrzystym dla człowieka. Przy odrobinie wprawy można go tworzyć całkowicie „z głowy” (bez użycia dodatkowego oprogramowania)

Pierwsze spotkanie z JSON'em

Jak tytuł już zdradza – zajmiemy się JSON’em w przyjaznym środowiska ulubionego węża – Pythona. Najprościej zainstalować bibliotekę przy pomocy aplikacji pip:

pip install json

Do zaczytania biblioteki w Python’ie wystarczy import JSON. Składa się on z par kluczy i argumentów, które można zagnieżdżać praktycznie w nieskończoność. JSON’owy klucz musi być niepowtarzalnym łańcuchem znaków na danym poziomie zagnieżdżenia. Najprostszym kodem tworzącym JSON’a, pamiętając, że jest on tekstem, prezentuje poniższy przykład. Gdzie kluczem jest name a jego argumentem Szymon:

  1. import json
  2. json_var = '{"name":"Szymon"}'

Porównanie struktur Python’a a JSON’a:

Python

JSON

Widzimy, że występują w nich różnice. Należy o nich pamiętać podczas pracy z JSON’em. Jeżeli nie będziemy używali wcześniej wspomnianej biblioteki, możemy niemiło się zaskoczyć, zapominając o tych różnicach.

Generacja i odczyt

Skoro mamy już przygotowany string reprezentujący JSON’a, możemy odczytać go i przekonwertować do słownika:

  1. import json
  2. json_var = '{"name":"Szymon"}'
  3. json_obj = json.loads(json_var)

Mając tak utworzony obiekt, możemy na przykład odczytać wartość wybierając klucz:

  1. import json
  2. json_var = '{"name":"Szymon"}'
  3. json_obj = json.loads(json_var)
  4. print(json_obj["name"])

Takiego zabiegu używamy zazwyczaj, gdy odczytamy tekst z pliku o rozszerzeniu .json, aby na nim pracować już bezpośrednio w strukturze Python’a. Jeżeli chcemy utworzyć obiekt JSON’a ze słownika, na którym pracowaliśmy, użyj metody dumps, której argumentem będzie słownik:

  1. import json
  2. test_dict = { "name":"Szymon", "other_data": ["val_1", "val_2"]}
  3. json.dumps(test_dict)

Wiedzę tę dla przykładu możemy wykorzystać, gdy tworzymy serwer HTTP oparty o Python’owego Flaska:

JSON + Python image

Dodaj komentarz