Co to jest JSON? Lepszy format wymiany danych

JavaScript Object Notation to pozbawiona schematu, tekstowa reprezentacja danych strukturalnych, która jest oparta na parach klucz-wartość i listach uporządkowanych. Chociaż JSON pochodzi z JavaScript, jest obsługiwany natywnie lub przez biblioteki w większości głównych języków programowania. JSON jest powszechnie, ale nie wyłącznie, używany do wymiany informacji między klientami WWW a serwerami WWW. 

W ciągu ostatnich 15 lat JSON stał się wszechobecny w sieci. Obecnie jest to format wybierany dla prawie każdej publicznie dostępnej usługi internetowej i często jest również używany w przypadku prywatnych usług internetowych.

Popularność formatu JSON zaowocowała również natywną obsługą formatu JSON przez wiele baz danych. Relacyjne bazy danych, takie jak PostgreSQL i MySQL, są teraz dostarczane z natywną obsługą przechowywania i odpytywania danych JSON. Bazy danych NoSQL, takie jak MongoDB i Neo4j, również obsługują JSON, chociaż MongoDB używa nieco zmodyfikowanej, binarnej wersji JSON za kulisami.

W tym artykule szybko przyjrzymy się JSON i omówimy, skąd się wziął, jego zalety w stosunku do XML, jego wady, kiedy należy go używać i kiedy należy rozważyć alternatywy. Ale najpierw zagłębmy się w szczegółach tego, jak wygląda JSON w praktyce.

Przykład JSON

Oto przykład danych zakodowanych w JSON:

{

  „FirstName”: „Jonathan”,

  „LastName”: „Freeman”,

  „LoginCount”: 4,

  „IsWriter”: true,

  „WorksWith”: [„Spantree Technology Group”, „”],

  „Zwierzęta domowe”: [

    {

      „Name”: „Lilly”,

      „Type”: „Szop”

    }

  ]

}

Powyższa struktura jasno definiuje niektóre atrybuty osoby. Zawiera imię i nazwisko, ile razy dana osoba się logowała, czy jest pisarzem, listę firm, z którymi współpracuje, oraz listę zwierząt domowych (w tym przypadku tylko jednego). Struktura podobna do powyższej może zostać przesłana z serwera do przeglądarki internetowej lub aplikacji mobilnej, która następnie wykona pewną akcję, taką jak wyświetlenie danych lub zapisanie ich do późniejszego wykorzystania.

JSON to ogólny format danych z minimalną liczbą typów wartości: ciągi, liczby, wartości logiczne, listy, obiekty i null. Chociaż notacja jest podzbiorem JavaScript, typy te są reprezentowane we wszystkich popularnych językach programowania, co sprawia, że ​​JSON jest dobrym kandydatem do przesyłania danych przez luki językowe.

Pliki JSON

Dane JSON są przechowywane w plikach z rozszerzeniem .json. Zgodnie z czytelnym dla człowieka etosem JSON, są to zwykłe pliki tekstowe, które można łatwo otwierać i sprawdzać. Jak wyjaśnia blog SQLizer, jest to również klucz do szerszej interoperacyjności JSON, ponieważ prawie każdy język, który możesz nazwać, może odczytywać i przetwarzać zwykłe pliki tekstowe i są one łatwe do wysłania przez Internet.

Dlaczego powinienem używać JSON? 

Aby zrozumieć użyteczność i znaczenie JSON, musimy trochę zrozumieć historię interaktywności w sieci. 

Na początku XXI wieku interaktywność w sieci zaczęła się zmieniać. W tamtym czasie przeglądarka służyła głównie jako głupi klient do wyświetlania informacji, a serwer wykonał całą ciężką pracę, aby przygotować zawartość do wyświetlenia. Gdy użytkownik kliknął łącze lub przycisk w przeglądarce, do serwera wysyłane było żądanie, serwer przygotowywał potrzebne informacje w formacie HTML, a przeglądarka renderowała HTML jako nową stronę. Ten wzorzec był powolny i nieefektywny, wymagając od przeglądarki ponownego wyrenderowania wszystkiego na stronie, nawet jeśli tylko część strony uległa zmianie.

Ponieważ ponowne ładowanie całej strony było kosztowne, twórcy stron internetowych szukali nowszych technologii, aby poprawić ogólne wrażenia użytkownika. W międzyczasie możliwość wykonywania żądań internetowych w tle podczas wyświetlania strony, która została niedawno wprowadzona w programie Internet Explorer 5, okazała się realnym sposobem na przyrostowe ładowanie danych do wyświetlenia. Zamiast przeładowywać całą zawartość strony, kliknięcie przycisku odświeżania spowoduje wywołanie żądania internetowego, które zostanie załadowane w tle. Po załadowaniu treści dane mogły być przetwarzane, zapisywane i wyświetlane na stronie za pomocą JavaScript, uniwersalnego języka programowania w przeglądarkach.

REST vs. SOAP: połączenie JSON

Pierwotnie dane te były przesyłane w formacie XML (patrz przykład poniżej) przy użyciu protokołu przesyłania wiadomości o nazwie SOAP (Simple Object Access Protocol). Ale XML był rozwlekły i trudny do zarządzania w JavaScript. JavaScript miał już obiekty, które są sposobem wyrażania danych w języku, więc Douglas Crockford wziął podzbiór tego wyrażenia jako specyfikację nowego formatu wymiany danych i nazwał go JSON. JSON był znacznie łatwiejszy do odczytania dla ludzi i dla przeglądarek do przeanalizowania.

W ciągu pierwszej dekady XXI wieku inna technologia usług internetowych, zwana Representational State Transfer lub REST, zaczęła wyprzedzać SOAP w celu przesyłania danych. Jedną z największych zalet programowania przy użyciu REST API jest to, że możesz używać wielu formatów danych - nie tylko XML, ale także JSON i HTML. Ponieważ twórcy stron internetowych preferowali JSON od XML, tak też zaczęli preferować REST zamiast SOAP. Jak Kostyantyn Kharchenko umieścił to na blogu Svitla: „Pod wieloma względami sukces REST zawdzięcza formatowi JSON, który jest łatwy w użyciu na różnych platformach”.

Obecnie JSON jest de facto standardem wymiany danych między klientami internetowymi i mobilnymi oraz usługami zaplecza. 

JSON kontra XML

Jak wspomniano powyżej, główną alternatywą dla JSON jest XML. Jednak XML staje się coraz mniej powszechny w nowych systemach i łatwo zrozumieć, dlaczego. Poniżej znajduje się wersja danych, które widziałeś powyżej, tym razem w formacie XML:

  Jonathan

  Obywatel

  4

  prawdziwe

    Spantree Technology Group

      Lilly

      szop pracz

Oprócz tego, że jest bardziej rozwlekły (dokładnie dwa razy bardziej rozwlekły w tym przypadku), XML wprowadza również pewną niejednoznaczność podczas analizowania do struktury danych przyjaznej dla języka JavaScript. Konwersja XML na obiekt JavaScript może zająć od dziesiątek do setek linii kodu i ostatecznie wymaga dostosowania w oparciu o konkretny analizowany obiekt. Konwersja JSON na obiekt JavaScript wymaga jednej linii kodu i nie wymaga żadnej wcześniejszej wiedzy o analizowanym obiekcie.

Ograniczenia JSON

Chociaż JSON jest stosunkowo zwięzłym, elastycznym formatem danych, z którym można łatwo pracować w wielu językach programowania, ma on pewne wady. Oto pięć głównych ograniczeń: 

  1. Brak schematu. Z jednej strony oznacza to całkowitą elastyczność w przedstawianiu danych w dowolny sposób. Z drugiej strony oznacza to, że można bardzo łatwo przypadkowo utworzyć zniekształcone dane.
  2. Tylko jeden typ liczb: format zmiennoprzecinkowy podwójnej precyzji IEEE-754. To całkiem niezły kęs, ale oznacza to po prostu, że nie możesz skorzystać z różnorodnych i zniuansowanych typów liczb dostępnych w wielu językach programowania.
  3. Brak typu daty. To pominięcie oznacza, że ​​programiści muszą uciekać się do reprezentacji dat w postaci ciągów, co prowadzi do rozbieżności w formatowaniu, lub muszą przedstawiać daty w milisekundach od epoki (1 stycznia 1970).
  4. Bez komentarza. Uniemożliwia to dodawanie adnotacji do pól w tekście, co wymaga dodatkowej dokumentacji i zwiększa prawdopodobieństwo nieporozumień.
  5. Gadatliwość. Chociaż JSON jest mniej szczegółowy niż XML, nie jest to najbardziej zwięzły format wymiany danych. W przypadku usług o dużej objętości lub usług specjalnego przeznaczenia będziesz chciał użyć bardziej wydajnych formatów danych.

Kiedy powinienem używać JSON?

Jeśli piszesz oprogramowanie, które komunikuje się z przeglądarką lub natywną aplikacją mobilną, powinieneś użyć JSON jako formatu danych. Używanie formatu takiego jak XML jest nieaktualnym wyborem i czerwoną flagą dla talentów front-endowych i mobilnych, które w innym przypadku chciałbyś przyciągnąć.

W przypadku komunikacji między serwerami lepiej byłoby użyć struktury serializacji, takiej jak Apache Avro lub Apache Thrift. JSON nie jest tutaj złym wyborem i nadal może być dokładnie tym, czego potrzebujesz, ale odpowiedź nie jest tak jasna, jak w przypadku komunikacji internetowej i mobilnej.

Jeśli używasz baz danych NoSQL, utkniesz z tym, co daje Ci baza danych. W relacyjnych bazach danych, które obsługują JSON jako typ, dobrą zasadą jest używanie go jak najmniej. Relacyjne bazy danych zostały dostrojone pod kątem danych strukturalnych, które pasują do określonego schematu. Chociaż większość obsługuje teraz bardziej elastyczne dane w postaci JSON, możesz spodziewać się wydajności podczas wykonywania zapytań o właściwości w tych obiektach JSON.

JSON to wszechobecny, de facto format przesyłania danych między serwerami internetowymi a przeglądarkami i aplikacjami mobilnymi. Jego prosta konstrukcja i elastyczność sprawiają, że jest on łatwy do odczytania i zrozumienia, aw większości przypadków łatwy w obsłudze w wybranym języku programowania. Brak ścisłego schematu zapewnia elastyczność formatu, ale ta elastyczność czasami utrudnia zapewnienie prawidłowego czytania i pisania JSON.

Parser JSON

Część kodu aplikacji, która przekształca dane przechowywane jako JSON do formatu, którego aplikacja może używać, nazywana jest parserem. JavaScript, jak można się spodziewać, zawiera natywny analizator składni, metodę JSON.parse ().

Być może będziesz musiał wykonać trochę więcej pracy, aby pracować z JSON w językach silnie wpisywanych, takich jak Scala lub Elm, ale powszechne przyjęcie JSON oznacza, że ​​istnieją biblioteki i narzędzia, które pomogą Ci przejść przez wszystkie najtrudniejsze części. 

Witryna json.org zawiera obszerną listę bibliotek kodu, których można używać do analizowania, generowania i manipulowania kodem JSON w językach tak różnorodnych, jak Python, C # i COBOL.

Narzędzia JSON

Jeśli chcesz bezpośrednio manipulować lub badać dane zakodowane w formacie JSON, bez samodzielnego pisania kodu, istnieje wiele narzędzi online, które mogą Ci pomóc. Wszystkie programowe odpowiedniki w bibliotekach kodu połączonych powyżej, ale możesz wyciąć i wkleić kod JSON do tych narzędzi opartych na przeglądarce, aby pomóc Ci lepiej zrozumieć JSON lub przeprowadzić szybką i brudną analizę:

  • JSON Formatter: JSONLint sformatuje i zweryfikuje dowolny kod JSON.
  • Przeglądarka JSON: Stack.hu ma witrynę, która utworzy interaktywne drzewo, aby pomóc Ci zrozumieć strukturę kodu JSON. 
  • JSON Beautifier: Jeśli chcesz „ładnie wydrukować” swój kod JSON, z kolorowaniem składni i tym podobnymi, Prettydiff może Ci w tym pomóc. 
  • Konwerter JSON: Chcesz szybko przenieść dane z formatu JSON na inny? Convertcsv.com ma narzędzia, które mogą konwertować JSON na CSV (który można następnie otworzyć w Excelu) lub XML.

Samouczek JSON

Chcesz zagłębić się i dowiedzieć się więcej o tym, jak pracować z JSON w swoich interaktywnych aplikacjach? Mozilla Developer Network ma świetny samouczek, który pomoże Ci zacząć korzystać z JSON i JavaScript. Jeśli jesteś gotowy, aby przejść do innych języków, zapoznaj się z samouczkiem dotyczącym używania JSON z Javą (z Baeldung), z Pythonem (z DataCamp) lub z C # (z Pomocy do testowania oprogramowania). Powodzenia!

Josh Fruhlinger przyczynił się do powstania tego artykułu.