Zum Hauptinhalt springen

JSON-Modul

Unten finden Sie die vollständige Liste der JSON-Modulbefehle und deren Implementierungsstatus in Garnet.
Beachten Sie, dass sich diese Liste ändern kann, da wir die Unterstützung unserer API-Befehle mit Hilfe unserer wachsenden Community weiter ausbauen.

JSON-Befehlsliste

BefehlIn Garnet implementiertHinweise
JSON.GET
JSON.SET
JSON.DEL
JSON.TYPE
JSON.NUMINCRBY
JSON.NUMMULTBY
JSON.STRAPPEND
JSON.STRLEN
JSON.ARRAPPEND
JSON.ARRINDEX
JSON.ARRINSERT
JSON.ARRLEN
JSON.ARRPOP
JSON.ARRTRIM
JSON.OBJKEYS
JSON.OBJLEN

Befehlsdetails

JSON.GET

Syntax

JSON.GET key [INDENT indent-string] [NEWLINE newline-string] [SPACE space-string] [path [path ...]]

Argumente

  • key: Schlüssel, der das JSON-Dokument enthält
  • INDENT: (Optional) Einrückungszeichenkette für „Pretty Printing“
  • NEWLINE: (Optional) Neue Zeile Zeichenkette für „Pretty Printing“
  • SPACE: (Optional) Leerzeichen Zeichenkette für „Pretty Printing“
  • path: (Optional) JSONPath-ähnlicher Ausdruck zur Angabe der abzurufenden Elemente

Antwortformat

Gibt eines der folgenden Elemente zurück:

  • Bulk-Zeichenkette: JSON-kodierter Wert, wenn der Pfad übereinstimmt
  • Array: Wenn mehrere Pfade angefordert werden
  • Null: Wenn Schlüssel oder Pfad nicht existiert

Beispiele

# Store a complex JSON object
JSON.SET example $ '{"name":"John","address":{"city":"London","postal":"SW1A"},"contacts":[{"type":"email","value":"john@example.com"},{"type":"phone","value":"123-456-789"}]}'

# Get entire document with pretty printing
JSON.GET example . INDENT " " NEWLINE "\n"
-> {"name":"John","address":{"city":"London","postal":"SW1A"},"contacts":[{"type":"email","value":"john@example.com"},{"type":"phone","value":"123-456-789"}]}

# Get multiple specific paths
JSON.GET example .name .address.city .contacts[0].value
-> ["John","London","john@example.com"]

# Get array elements with filter
JSON.GET example .contacts[?(@.type=="email")].value
-> ["john@example.com"]

JSON.SET

Syntax

JSON.SET key path value [NX | XX]

Argumente

  • key: Schlüssel, unter dem das JSON-Dokument gespeichert werden soll
  • path: JSONPath-ähnlicher Ausdruck, der den Speicherort angibt
  • value: Gültiger JSON-Wert oder eine Zeichenkettendarstellung
  • NX: Setze den Schlüssel nur, wenn er nicht existiert
  • XX: Setze den Schlüssel nur, wenn er bereits existiert

Antwortformat

Gibt eines der folgenden Elemente zurück:

  • "OK": Vorgang erfolgreich
  • Null: Vorgang fehlgeschlagen (bei Verwendung von NX/XX-Bedingungen)

Beispiele

# Set with NX (only if not exists)
JSON.SET user:3 $ '{"name":"Bob"}' NX
-> OK

# Set with XX (only if exists)
JSON.SET user:3 .age '25' XX
-> OK

# Modify nested array
JSON.SET user:3 .profile.interests[1] '"reading"'
-> OK

Wichtige Hinweise

  1. Pfad muss mit einem Punkt (.) beginnen
  2. Zeichenkettenwerte müssen ordnungsgemäß maskiert sein
  3. Arrays sind nullbasiert indiziert
  4. Das Setzen eines nicht existierenden Elternpfads schlägt fehl
  5. NX und XX sind gegenseitig ausschließend

Unterstützte JSON-Pfadsyntax

PfadtypSyntaxBeschreibungBeispielHinweise
Stamm. oder $Bezieht sich auf das JSON-StammdokumentJSON.GET key $Beide Notationen werden unterstützt
Eigenschaftenzugriff.eigenschaft oder $.eigenschaftGreift auf eine direkte Eigenschaft eines Objekts zuJSON.GET key $.nameGroß-/Kleinschreibung wird beachtet
Verschachtelte Eigenschaften.prop1.prop2 oder $.prop1.prop2Greift auf verschachtelte Objek Eigenschaften zuJSON.GET key $.address.city
Array-Index.array[n] oder $.array[n]Greift auf das Array-Element am Index n zuJSON.GET key $.users[0]Nullbasierte Indizierung
Array-Slice.array[start:end]Ruft Array-Elemente von start bis end abJSON.GET key $.users[1:3]Endindex ist exklusiv
Letztes Array-Element.array[-1]Greift auf das letzte Element des Arrays zuJSON.GET key $.users[-1]
Alle Array-Elemente.[*] oder $[*]Wählt alle Elemente in einem Array ausJSON.GET key $[*]
Array-Filter.[?(@.prop==wert)]Filtert Array-Elemente nach BedingungJSON.GET key $.users[?(@.age>21)]
Mehrere Pfade.prop1 .prop2Ruft mehrere Pfade gleichzeitig abJSON.GET key $.name $.age
Platzhalter.* oder $.*Wählt alle Eigenschaften eines Objekts ausJSON.GET key $.address.*
Array anhängen.[+]Wird an ein Array angehängt (nur SET)JSON.SET key $.list[+] valueDerzeit nicht unterstützt
Array-Bereich.[start:]Wählt Elemente von Anfang bis Ende ausJSON.GET key $.list[2:]
Bedingt.[?(@.size=="L")]Komplexe Array-FilterungJSON.GET key $.items[?(@.size=="L")]Unterstützt mehrere Bedingungen
Verschachtelte Arrays.[*][0] oder $[*][0]Greift auf verschachtelte Array-Elemente zuJSON.GET key $.matrix[*][0]

Besondere Überlegungen

  • Array-Indizes sind nullbasiert
  • Eigenschaftsnamen sind Groß-/Kleinschreibung-sensitiv
  • Ungültige Pfade geben Null zurück
  • Mehrere Filter können mit && und || kombiniert werden