JSON_TO_PROCESS
Die Script-Funktion JSON_TO_PROCESS wird verwendet, um JSON-Werte in einer internen Liste (Prozess) für die weitere Verarbeitung zu speichern (z. B. Iteration über Elemente).
Syntax
JSON_TO_PROCESS (JSON, JSONPath [,MODE])
Parameter
- JSON
Ein String oder eine Variable, die ein gültiges JSON-Dokument enthalten
- JSONPath
Ein gültiger JSONPath-Ausdruck, der die zu speichernden Werte identifiziert.
- MODE
VALUE (Standard), PATH oder KEYS
Extrahiert den Wert, der mit dem JSONPath-Ausdruck übereinstimmt (VALUE), den absoluten JSONPath zu diesem Wert (PATH) oder die Schlüssel eines JSON-Objekts (KEYS).
Tipp: Wenn MODE auf PATH gesetzt ist, speichert die Funktion nicht den übereinstimmenden Funktionswert, sondern seinen absoluten JSONPath. Dieser Pfad kann verwendet werden, um den Wert später zu ändern (siehe nachstehende Beispiele).
Hinweise:
- Verwenden Sie diese Funktion, wenn Sie auf ein Array mit JSON-Werten zugreifen müssen, da JSON_GET_VALUE nur auf einzelne (primitive) Werte zugreifen kann.
- Die Datensequenz erstellt eine Zeile für jeden ausgewählten Wert
Rückgabewert
Die Script-Funktion speichert Werte aus einem JSON-Dokument, das mit einem JSONPath-Ausdruck in einer Datensequenz (interne Liste) übereinstimmt. Der Verweis auf die erzeugte Datensequenz wird als Rückgabewert zurückgegeben.
Laufzeitfehler
JSON_TO_PROCESS schlägt mit einem Laufzeitfehler unter den folgenden Bedingungen fehl:
- 45334
Wenn Ihr JSON-Dokument ungültig ist - 45342
Syntaxfehler im JSONPath-Ausdruck - 45347
Ungültiger Modus-Parameter: Wert, Pfad oder Schlüssel erwartet - 45350
Im Modus KEYS muss der JSONPath ein Objekt auswählen
Beispiele:
Dieses Beispiel verwendet die Script-Funktion, um die in der JSON-Struktur enthaltenen Host-IP-Adressen auszugeben.
:SET &JSON_DOC# = '[{"host":"192.168.0.10","active":true},{"host":"192.168.0.20","active":false},{"host":"192.168.0.29","active":true}]'
:SET &HND# = JSON_TO_PROCESS(&JSON_DOC#, '$..host' )
:PROCESS &HND#
:SET &HOST_IP# = GET_PROCESS_LINE(&HND#)
:PRINT "&HOST_IP#"
:ENDPROCESS
Ergebnis des Aktivierungsreports
U00020408 192.168.0.10
U00020408 192.168.0.20
U00020408 192.168.0.29
Iterieren Sie über alle Schlüssel und Werte eines JSON-Objekts mit dem Modus KEYS:
:SET &JSON_DOC# = '{"serverConfig": {"OS":"Linux","Cores":8,"RAM": 16, "DiskType":"SSD","DiskSpace":512}}'
:SET &OBJPATH# = '$.serverConfig'
! Zuerst rufen wir alle Schlüssel des serverConfig-Objekts unter Verwendung des Modus "KEYS" ab, d. h. "OS", "Cores",...
:SET &KEYS# = JSON_TO_PROCESS(&JSON_DOC#,&OBJPATH# ,"KEYS")
:PROCESS &KEYS#
:SET &KEY# = GET_PROCESS_LINE(&KEYS#)
! Jetzt rufen wir den Wert für diesen Schlüssel ab, indem wir den Objektpfad und den Schlüsselnamen verknüpfen
:SET &VALUE# = JSON_GET_VALUE(&JSON_DOC#,'&OBJPATH#.&KEY#')
:P '&KEY#:&VALUE#'
:ENDPROCESS
Ergebnis des Aktivierungsreports
U00020408 OS:Linux
U00020408 Cores:8
U00020408 RAM:16
U00020408 DiskType:SSD
U00020408 DiskSpace:512
Setzen Sie alle Werte der aktiven Eigenschaft auf true. Wählen Sie dazu die JSONPaths aller aktiven Eigenschaften aus, und verwenden Sie dann JSON_SET_VALUE, um diese Pfade auf true zu ändern.
:SET &JSON_DOC# = '[{"host":"192.168.0.10","active":false},{"host":"192.168.0.20","active":false},{"host":"192.168.0.29","active": true}]'
:SET &HND# = JSON_TO_PROCESS(&JSON_DOC#, '$..active', "PATH" )
:PROCESS &HND#
: SET &STATUS_PATH# = GET_PROCESS_LINE(&HND#)
: SET &RET# = JSON_SET_VALUE(&JSON_DOC#, &STATUS_PATH#, 'true')
:ENDPROCESS
:PRINT &JSON_DOC#
Ergebnis des Aktivierungsreports
U00020408 [{"host":"192.168.0.10","active":"true"},{"host":"192.168.0.20","active":"true"},{"host":"192.168.0.29","active":"true"}]
Siehe auch:
seealso