JSON-fråga

Extrahera värden från JSON med JSONPath-uttryck eller RFC 6901 JSON Pointer

JSON

Fråga

JSON-fråga

Extrahera värden från JSON med JSONPath-uttryck eller RFC 6901 JSON Pointer

Funktioner

  • Två frågelägen sida vid sida: JSONPath (driven av den delade QueryService med wildcards och hakparentes-åtkomst) och RFC 6901 JSON Pointer (snedstrecksseparerad, med ~0/~1-escape) — välj syntax som matchar dina befintliga verktyg
  • Wildcard `*` på vilket segment som helst expanderar till alla objektnycklar eller arrayelement på den nivån — `$.store.books[*].title` returnerar varje boktitel utan loop
  • Varje träff visar både konkret sökväg OCH värde: resultat är inte ett enda svar utan en lista av sökvägar — en wildcard-expansion producerar N rader att kopiera individuellt eller samlat
  • JSON Pointer-läget validerar segmentsyntax: börjar med `/`, heltalssegment indexerar arrayer, namngivna segment indexerar objekt, `~1` avkodar till `/` och `~0` till `~` — samma semantik som JSON Schema instancePath och JSON Patch
  • Per-träff-kopiera-knappen skriver värdet till urklipp (strängar rå, strukturer som pretty-print JSON), och Kopiera alla dumpar hela `sökväg: värde`-listan som klartext
  • Tolkningsfel och frågefel ytor upp separat med JS-motorns fullständiga meddelande — du vet omedelbart om din JSON eller ditt uttryck är skyldigt
  • Ladda exempel fyller ett litet bokhandelsdokument med en fungerande fråga för aktivt läge — användbar förstagångsreferens för syntax
  • Helt klientsida: JSON, uttryck och resultat lämnar aldrig webbläsaren; fungerar offline när sidan är cachad

Så använder du

  1. Klistra in JSON-dokumentet du vill fråga i den vänstra textrutan.
  2. Välj ett frågeläge: JSONPath (bra för selektorer med wildcards) eller JSON Pointer (bra för att otvetydigt namnge en nod).
  3. Skriv uttrycket i frågefältet — exempel visas i platshållaren för varje läge.
  4. Tryck Kör fråga eller Enter i frågefältet. Träffar visas med konkreta sökvägar och värden; en räknare visar hur många som hittades.
  5. Kopiera enskilda värden med ikonen bredvid varje träff, eller använd Kopiera alla för hela `sökväg: värde`-listan.
  6. Använd Ladda exempel för att fylla båda inmatningarna med ett fungerande exempel om du är ny på syntaxen.

Tips och bästa praxis

  • När du är osäker på om ditt JSON har en nyckel, använd först en wildcard för att räkna upp vad som verkligen finns, smalna sedan av.
  • JSON Pointer-sökvägar är sorterbara som strängar — användbart när du vill diffa sökvägs-set mellan två strukturer.
  • Om en fråga returnerar en träff men du förväntade flera, kontrollera stavfel (`book` vs `books`) — JSONPath här returnerar exakt nyckelmatchning, inte luddig.
  • För djupt nästlad data är JSON Pointer kortare än JSONPath eftersom det inte bär `$` och `.` separatorer — användbart i chatt eller commit-meddelanden.
  • Kombinera med JSON Tree: navigera visuellt först, kopiera sedan en känd-bra pointer till detta verktyg för återanvändning.

Vanliga frågor

Vilken JSONPath-syntax stöds?

Den minimala-men-användbara delmängden: `$` rot, `.key` medlemsåtkomst, `['key']` citerad åtkomst (för nycklar med punkter eller specialtecken), `[N]` array-index, och `*` wildcard på vilket segment som helst. Filteruttryck (`[?(@.price < 30)]`), descendant-operator (`..`) och slicing (`[1:3]`) stöds inte här — för dem, använd JSON Formatters JSONPath-flik som bär en rikare motor.

Vad är skillnaden mellan JSONPath och JSON Pointer?

JSONPath är ett frågespråk (XPath-för-JSON) — kan välja flera noder via wildcards, descendants och predikat. JSON Pointer (RFC 6901) är en sökvägsnotation — namnger EXAKT EN nod och antingen finns den eller inte. Använd JSONPath när du vill ha en resultatMÄNGD; JSON Pointer när du vill ha en deterministisk position (t.ex. för JSON Patch eller att kopiera en misslyckad instancePath från en schemavalidator).

Varför behöver jag båda lägena?

Olika verktyg och standarder använder olika notationer. JSON Schema instancePath-fel är JSON Pointer. fast-json-patch använder JSON Pointer. JSONPath är vad de flesta JSON-fråga-CLI-verktyg och bibliotek förväntar. Att ha båda lägena här betyder att du kan kopiera en sökväg mellan verktyg utan att skriva om.

Hur hanteras nycklar med specialtecken?

JSONPath: citera dem i hakparenteser — `$['weird.key']` accessar nyckeln bokstavligen kallad `weird.key`. JSON Pointer: escape enligt RFC 6901 — `/` i en nyckel blir `~1`, `~` blir `~0`. Platshållaren visar standardformen för varje läge.

Vad händer om sökvägen inte matchar något?

Du får ett 0-träffar-resultat och en 'Frågan gav inga träffar'-notis snarare än ett fel. Det är den normala JSONPath / JSON Pointer-konventionen: saknade sökvägar är frånvaro, inte misslyckande. Skilj frånvaro från malformad indata genom att se om felraden visades.

Kan wildcards stiga ner i nästlade arrayer?

Ja, på varje nivå. `$.users[*].roles[*]` wildcards först över alla användare, sedan över varje användares roller, producerande varje roll-sträng. Utmatningstabellen visar den lösta konkreta sökvägen för varje träff (t.ex. `$.users[0].roles[2]`), användbart när du vill veta exakt var en träff kom från.

Skickas något till en server?

Nej. JSON.parse körs i din webbläsare, JSONPath / JSON Pointer-evaluering körs i din webbläsare, och träffar renderas till sidan utan nätverksanrop. DevTools-fliken Nätverk visar ingenting när du trycker Kör fråga.

Vad är skillnaden mot frågefliken i JSON Formatter?

JSON Formatter är multi-verktyg: format, validering, schema-check, JSONPath, diff. Denna fristående JSON Query är det minimala gränssnittet: en URL, två lägen, resultat-som-lista med per-träff-kopia, inga extra ytor. Använd Formatter när du vill ha en enda vy som kombinerar flera JSON-arbetsflöden; den här när du bara vill extrahera värden.