Uruchamiaj zapytania JSONPath zgodne z RFC 9535 na wklejonym JSON i zobacz każde dopasowanie wyróżnione
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane.JSONPath wybiera wartości z JSON za pomocą krótkiego wyrażenia. $.store.book[*].author zwraca wszystkich autorów, $..price wszystkie ceny na dowolnej głębokości, a $..book[[email protected] < 10] tylko książki tańsze niż 10. Tester jest zgodny z RFC 9535, standardem z 2024 roku, i wyróżnia każde dopasowanie w sformatowanym JSON.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej JSON do panelu JSON albo kliknij Wypróbuj przykład.
Wpisz zapytanie w polu JSONPath albo wybierz je z listy Przykłady.
Zobacz dopasowania zaznaczone na karcie Wyróżnione albo otwórz Wyniki, aby zobaczyć każdą ścieżkę i wartość.
Kliknij Kopiuj wartości, aby otrzymać dopasowania jako tablicę JSON, albo Kopiuj ścieżki.
Tester JSONPath uruchamia zapytanie na wklejonym JSON i pokazuje wynik na trzy sposoby: listę pasujących wartości, znormalizowaną ścieżkę do każdego dopasowania oraz wyróżnienie dopasowań w sformatowanym dokumencie. Wynik aktualizuje się podczas pisania, więc wyrażenie można budować krok po kroku i widzieć, gdzie zawodzi.
Silnik implementuje RFC 9535, standard JSONPath opublikowany przez IETF w 2024 roku. Obsługuje korzeń $, dostęp do dzieci przez kropkę i nawiasy, operator rekurencyjnego zejścia .., symbole wieloznaczne, indeksy tablic, także ujemne, slice'y takie jak [1:5:2] i [::-1] oraz wyrażenia filtrujące z ==, !=, <, <=, >, >=, &&, || i !. Dostępne jest pięć standardowych funkcji: length(), count(), value(), match() i search(), przy czym dwie ostatnie przyjmują wyrażenia regularne w formie I-Regexp. Zapytania łamiące reguły typów standardu, na przykład porównanie zapytania, które może zwrócić wiele węzłów, są odrzucane z komunikatem wyjaśniającym przyczynę.
Wiele starszych bibliotek, w tym oryginalny JSONPath z 2007 roku i Jayway dla Javy, różni się od standardu w drobiazgach: niektóre wymagają nawiasów wokół filtrów, jak w [?(@.price < 10)], co tutaj nadal działa; inne pozwalają na wyrażenia skryptowe lub dodatkowe funkcje, których RFC 9535 nie przewiduje. Gdy zapytanie z dokumentacji biblioteki zostanie odrzucone, komunikat zwykle wskazuje różnicę.
Niepoprawny JSON jest zgłaszany z wierszem i kolumną pierwszego problemu. Liczby są odczytywane jako liczby JavaScript, więc liczby całkowite większe niż 2^53 tracą precyzję, a powtórzony klucz zachowuje ostatnią wartość.
Czego narzędzie nie robi: składni JMESPath ani jq, edycji JSON ani pobierania adresu URL. Wszystko działa w przeglądarce. Powiązane narzędzia: JSON Formatter, JSON Diff, JSON to TypeScript.
Należy użyć selektora filtru: $.items[[email protected] == 'active'] zachowuje elementy, których status to active. Znak @ oznacza kolejno każdy element. Warunki łączy się przez && i ||, liczby porównuje przez < i >, a samo [email protected] zachowuje elementy, które w ogóle mają pole email.
Pojedyncza kropka bierze dziecko bieżącego węzła, więc $.store.book czyta po jednym poziomie. Dwie kropki szukają na każdej głębokości, więc $..price znajduje każde pole price w całym dokumencie, także w tablicach. Rekurencyjne zejście jest wygodne, ale przy dużych odpowiedziach może dopasować więcej, niż zamierzano.
Z RFC 9535, opublikowanym przez IETF w lutym 2024 roku, pierwszym formalnym standardem JSONPath. Zapytania pisane dla starszych bibliotek zwykle działają, także filtry w ?( ), ale wyrażenia skryptowe i funkcje specyficzne dla bibliotek nie należą do standardu i są odrzucane z wyjaśnieniem.
Indeksem ujemnym: $.items[-1] to ostatni element, a $.items[-2] przedostatni. Działa też slice z ujemnym początkiem, więc $.items[-3:] zwraca trzy ostatnie. Indeksy poza końcem po prostu nic nie zwracają zamiast błędu.
Znormalizowana ścieżka to jedno dokładne położenie dopasowania, zapisane w stałej formie zdefiniowanej przez RFC 9535, na przykład $['store']['book'][0]['title']. Każdy wynik pokazuje swoją znormalizowaną ścieżkę, co przydaje się do wskazania wartości w zgłoszeniu błędu lub w asercji testu.
Tak, przez match() i search(). match(@.code, 'A[0-9]+') wymaga, by cały ciąg pasował do wzorca, a search(@.name, 'smith') znajduje go w dowolnym miejscu. Wzorce korzystają z I-Regexp, przenośnego podzbioru wyrażeń regularnych, więc skróty takie jak \d i asercje wyprzedzające nie są akceptowane.
Nadal coś nie działa? Zapytaj o narzędzie Tester JSONPath a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.