O języku JavaScript mogę powiedzieć mnóstwo złych rzeczy. Począwszy od tego, że powszechność stosowania anonimowych funkcji jako callbacków powoduje, że stężenie zagnieżdżonych nawiasów w kodzie osiąga często poziomy lispowe. Skończyć zaś mogę na koszmarnym wsparciu dla “normalnej” obiektowości, znającej chociażby pojęcie klasy i obiektu, który nie jest po prostu przypadkową kolekcją jakichś tam atrybutów.
Lecz co ciekawe, to właśnie takie traktowanie obiektów leży u źródła bardzo pożytecznego wynalazku wywodzącego się z okolic JavaScriptu – czyli formatu JSON (JavaScript Object Notation). Ponieważ w JS wszystko jest swego rodzaju hierarchicznym słownikiem, obiekt możemy zdefiniować podając po prostu listę nazw i definicji (wartości) jego składników:
A ponieważ JavaScript jest językiem interpretowanym, możliwe jest wykonanie kodu podanego jako tekst (funkcją eval
). Stąd możliwość użycia składni samego kodu JS – a dokładniej jej podzbioru zaprezentowanego wyżej – jako formatu serializacji obiektów, a więc w praktyce do przechowywania dowolnych danych. I tym właśnie jest JSON.
Wśród zalet tego formatu, obok natywnej obsługi przez jeden z popularnych języków programowania, na pewno da się łatwo zauważyć prostotę połączoną ze sporymi możliwościami. JSON to co najmniej “hierarchiczna wersja INI” z kilkoma dodatkami, takimi jak obsługa tablic czy kluczy będących dowolnymi ciągami znaków. Format nie jest zaś ani tak rozwlekły jak XML, ani tak ścisły w swej składni jak YAML. Jest więc łatwy do czytania i pisania dla człowieka oraz nie daje dużego narzutu przy przesyłaniu przez sieć. Stąd zresztą bierze się jego popularność do takich zastosowań jak zdalne wywoływanie funkcji (RPC) jako alternatywa dla przyciężkiego, XML-owego standardu SOAP. Korzysta z niego chociażby jeden z wariantów API Facebooka.
Jak wygląda obsługa JSON-a w językach programowania poza JavaScriptem? Otóż całkiem dobrze, co też opisuję dokładniej poniżej. I tak:
org.json
, w którym potrzebne klasy (jak JSONObject
i JSONArray
) są dostępne do użycia.simplejson
(niektóre starsze wersje 2.x) lub po prostu json
. Użycie JSON-a jest w tym języku bardzo proste ze względu na podobny do JavaScriptu model obiektowości.JavaScriptSerializer
.Pełniejsza lista jest dostępna na oficjalnej stronie JSON-a i obejmuje chyba każdy choć trochę szerzej używany język. Niezależnie więc od tego, do czego zechcemy tego formatu użyć i na jakiej platformie pracujemy, powinniśmy być w stanie całkiem łatwo to zrobić.
Uważam że rzezy ktore opisałeś na początku jako ‘złe’ są po prostu specyficzne i dla człowieka którego ‘głównym’ i ‘macierzystym’ językiem jest JS są jak najbardzije naturalne albo wręcz błogosławione;).
Ja już sobie nie wyobrażam programowania bez wyrażeń lambda aka. funkcji anonimowych, a JavaScriptowy model obiektowy jest akurat gdzieniegdzie bardzo popularny :). W sumie jedyna rzecz, która mi się niezbyt podoba w tym języku to traktowanie wszystkich liczb jako floaty.
Poza tym, dobre (okrągłe) nawiasy nie są złe ;).
Mimo wszystko, .NET zawiera natywnie serializację JSON.
Ukrywa się pod nazwą “javascriptserializer”.
O, dzięki za tę informację. Zastanawiam się tylko, czy ta klasa jest dostępna też w Compact Framework, co można było łatwo pisać aplikacje zintegrowane z fejsbukiem na Windows Phone 7 ;-)
Ta niby “klasyczna” obiektowosc zostala na sile dodana do js’a, wlasnie po to zeby ludzie znajacy tylko klasyczne OO za szybko sie nie zniechecali. Ta dwoista natura jest wlaciwie bledem projektowych – bo wprowadza nie potrzebne zamieszanie.
Nie ważne czy jest w Compact Framweork bo na Windows Phone nie pisze się w Compact Framewrok.
Cytat za Wikipedią:
Windows Phone 7 application development will be based on Silverlight, XNA, and the .NET Compact Framework 4 only.
Pogrubienie moje.
Co do .Neta, to polecam bibliotekę Json.Net (opisywałem ją kiedyś u siebie), która działa właściwie niezależnie od wersji. A w JavaScripcie, bardzo fajnie się korzysta z JSONa w jQuery. Zwłaszcza w żądaniach Ajaxowych:)
@MichalBe, a znasz kogoś, dla kogo JS jest głównym lub macierzystym językiem? Bo ja nie.
A poza tym, to JS ma wiele niedociągnięć. Głównym jest to, że każdy tworzy sobie w swojej przeglądarce obsługę JS na własnych zasadach. To jest głównym problemem. Powinno się wyznaczyć standardy i albo ich przestrzegasz, albo nie mów, że to JS.
JSON rzeczywiście jest formatem przyjaznym, ale pod względem przejrzystości kodu preferuję XML.