Praca z danymi w formacie JSON może przysporzyć niekiedy sporo problemów. Nie raz miewałem problemy z wyciągnięciem co ciekawszych informacji z takich plików, jednak napisanie rozbudowanych metod wybierania danych jest zadaniem dosyć pracochłonnym. Na szczęście są ludzie, którzy tworzą narzędzia na wzór JSONSelect.

Problem pracy z formatem JSON bardzo często bywa zagadnieniem trywialnym. Zwykle zależy nam na jednej lub kilku wartościach, które możemy wyciagnąć prostym odwołaniem do obiektu w JavaScript. Problem powstaje, gdy chcemy zagłębić się w rozbudowaną strukturę JSON. Łańcuch odwołań do obiektów staje się bardzo długi jak np. dla pliku JSON opisującego rodzinę: family.parents.children.child.name – tak nie może być! Kolejnym problemem może okazać się wyciągnięcie danych należących do określonego typu (np. ciąg znaków), które znajdują się na pewnym poziomie zagłębienia. Z pomocą przychodzi nam tutaj JSONSelect.

JSONSelect to „eksperymentalny język selektorów dla JSON” jak możemy przeczytać na stronie projektu. Dzięki niemu możemy w prosty sposób pobierać dane z formatu JSON przy użyciu selektorów podobnych do tych, które znamy z kaskadowych arkuszy stylów. Dzięki nim nie musimy tworzyć rozbudowanych odwołań do obiektów, czy pisać własnych funkcji przeszukujących dokument.

Chcemy dostać wszystkie imiona z naszej rodziny? Korzystamy z selektora .name. A może chcemy tylko imiona dzieci? Nie ma sprawy! JSONSelect pozwoli nam pobrać je przy pomocy selektora .child > .name. Język pozwala także przeszukiwać dokumenty JSON pod kątem typów danych. Na chwile obecną do dyspozycji jest ich sześć (object, array, number, string, boolean i null), jednak nie wykluczone, że kiedyś ta liczba się zwiększy, ponieważ JSONSelect to projekt open source. Każdy może przyczynić się do jego rozwoju poprzez GitHub.

Demo Pobierz

Nie wiem jak Wy, ale ja mam już kilka pomysłów na wykorzystanie tego narzędzia. Jak sam autor podaje na stronie projektu, język selektorów JSON jest w fazie mocno eksperymentalnej (dokumentacja JSONSelect jest jeszcze niepełna, więc należy mocno analizować przykłady w repozytorium GitHub). Mimo wszystko nie widzę przeciwwskazań, by pobawić się tym rozwiązaniem – a nuż pomożecie w rozwijaniu tego bądź co bądź standardu? Ja już się nim bawię. Dołączcie do mnie, pobierzcie i wyciskajcie z niego ile tylko możecie. Ciekawe jak bardzo rozbudowane selektory potraficie stworzyć ;)

Autor: Konrad Przydział