JSON + Python #1 – wprowadzenie

YAML, yamnik, jamniczek … w połączeniu z Pythonem, może tworzyć zgrany duet. YAML jako plik konfiguracyjny dowolnego kodu, testów itp.

Json i python

JSON + Python #1 - wprowadzenie


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: czyim synem jest JSON

Na początku lat 2000 komunikacja między serwerem i przeglądarką zdominowana była przez wtyczki Flash lub Java. Któż przy zdrowych zmysłach chciałby ich używać przez resztę życia. 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 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:

import json
 
json_var = '{"name":"Szymon"}'

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

Python

  • dict
  • tuple
  • list
  • str
  • int
  • float
  • True
  • False
  • None

JSON

  • Object
  • Array
  • Array
  • String
  • Number
  • Number
  • true
  • false
  • null

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:

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

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

import json
 
json_var = '{"name":"Szymon"}'
json_obj = json.loads(json_var)
 
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:

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

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

close

Newsletter