Co to jest JSONPath?

JSONPath to język zapytań dla JSON, podobny do tego, jak XPath działa dla XML. Pozwala na nawigację i ekstrakcję danych ze struktury JSON przy użyciu wyrażeń ścieżkowych. Wyrażenie JSONPath zaczyna się od $, które reprezentuje korzeń dokumentu, i używa notacji z kropką (.key) lub notacji nawiasowej (['key']) do przechodzenia przez obiekty, oraz [index] do dostępu do elementów tablicy.

JSONPath został pierwotnie opisany przez Stefana Gössnera w 2007 roku i od tego czasu stał się szeroko stosowanym standardem w API, frameworkach testowych i potokach przetwarzania danych. Jest obsługiwany w wielu językach i narzędziach, w tym JavaScript, Python, Java, oraz bazach danych takich jak PostgreSQL i MySQL.

Opis narzędzia

To narzędzie pozwala wkleić dowolny prawidłowy dokument JSON i napisać wyrażenie JSONPath, aby go przeszukać. Wyniki są wyświetlane natychmiast podczas pisania, pokazując wszystkie pasujące wartości jako sformatowaną tablicę JSON. Liczba dopasowań jest wyświetlana osobno, aby można było szybko sprawdzić, ile węzłów zostało wybrane.

Przykłady

Wejściowy JSON:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
Wyrażenie Wynik
$.store.book[*].title Wszystkie tytuły książek
$.store.book[0] Pierwszy obiekt książki
$.store.book[?(@.price < 10)] Książki tańsze niż $10
$.store.book[?(@.category == "fiction")] Tylko książki z kategorii fiction
$..price Wszystkie wartości price w dokumencie

Funkcje

  • Ocena w czasie rzeczywistym — wyniki aktualizują się podczas pisania wyrażenia lub edycji JSON
  • Wyświetla liczbę dopasowań w dedykowanym polu
  • Przycisk kopiowania w polu wyrażenia do szybkiego ponownego użycia
  • Przycisk wklejania do szybkiego wstawienia JSON lub wyrażeń ze schowka
  • Raportowanie błędów dla nieprawidłowego JSON lub źle sformułowanych wyrażeń ścieżkowych

Jak to działa

Wyrażenia JSONPath są oceniane względem przeanalizowanego JSON przy użyciu biblioteki jsonpath-plus. Symbol $ odnosi się do elementu głównego. Węzły podrzędne są dostępne za pomocą . lub [], symbole wieloznaczne za pomocą *, rekurencyjne zejście za pomocą .., a filtry za pomocą [?(...)]. Wynik jest zawsze tablicą pasujących wartości, nawet jeśli znaleziono tylko jedno dopasowanie.

Wyjaśnienie opcji

Składnia Znaczenie
$ Element główny
.key lub ['key'] Właściwość podrzędna
[*] Wszystkie elementy tablicy
[0] Pierwszy element tablicy (indeksowany od zera)
[-1] Ostatni element tablicy
[0,2] Elementy o indeksach 0 i 2
[0:2] Elementy od indeksu 0 do 1 (wycinek)
..key Rekurencyjne zejście — znajdź key na dowolnej głębokości
[?(@.price > 5)] Filtr — elementy, gdzie price jest większy niż 5
@ Bieżący węzeł (używany wewnątrz wyrażeń filtrujących)

Przypadki użycia

  • Tworzenie API — sprawdzenie, czy selektor JSONPath używany w kliencie REST, zestawie testów lub narzędziu mapowania danych ekstrahuje oczekiwane pola z odpowiedzi API
  • Transformacja danych — identyfikacja wartości do ekstrakcji z zagnieżdżonych ładunków JSON przed napisaniem skryptu transformacji
  • Nauka JSONPath — interaktywne eksperymentowanie ze składnią ścieżek, aby zrozumieć, jak operatory takie jak .., [*] i [?()] zachowują się na rzeczywistych danych

Porady

  • Użyj $..*, aby uzyskać każdą pojedynczą wartość w całym dokumencie — przydatne do eksploracji nieznanych struktur JSON.
  • Wyrażenia filtrujące obsługują porównania (==, !=, <, >, <=, >=) i mogą odwoływać się do zagnieżdżonych właściwości: [?(@.author.name == "Rees")].
  • Aby dopasować właściwość niezależnie od jej głębokości, użyj rekurencyjnego zejścia ..: $..title znajduje wszystkie pola title gdziekolwiek w dokumencie.