JSON_SET_VALUE

Verwenden Sie die Script-Funktion JSON_SET_VALUE, um den Wert eines vorhandenen Elements in einem JSON-Dokument festzulegen.

Syntax

JSON_SET_VALUE (JSON,JSONPath,Wert[,Cast])

Parameter

&VALUE# &CAST # &JSON_DOC# nach ADD_ITEM
'[1,2,3]' AUTO {"val":[1,2,3]}
'[1,2,3]' STRING {"val":"[1,2,3]"}
'1' AUTO {"val":1}
'1' STRING {"val":"1"}
'1' NUMBER {"val":1}
'1' BOOLEAN {"val":true}
'twelve' AUTO {"val":"twelve"}
'twelve' NUMBER

{"val": ""} (Hinweis: Ungültiges Casting - JSON-Dokument wird nicht geändert, und es wird ein Casting-Fehler zurückgegeben)

Rückgabewert

Keiner/Fehlercode im Fehlerfall

Laufzeitfehler

JSON_SET_VALUE schlägt mit einem Laufzeitfehler unter den folgenden Bedingungen fehl:

Einschränkungen

JSON_SET_VALUE erlaubt Ihnen nicht, neue Elemente zu Objekten oder Arrays hinzuzufügen. Verwenden Sie für diesen Zweck JSON_ADD_ITEM.

PATH_TO_ELEMENT kann nur ein JSON-Element setzen. Der Pfad muss im Dokument vorhanden sein.

JSON-Dokumente, die größer als 1 MB sind, werden nicht unterstützt.

style="font-weight: bold Wichtig!

Testen Sie JSONPath-Ausdrücke immer in einem Automation Engine-Script, bevor Sie sie in die Produktion übernehmen. JSONPath-Ausdrücke, die in anderen Tools entwickelt wurden, funktionieren möglicherweise nicht, da es keinen gemeinsamen JSONPath-Standard gibt.

Beispiele:

In diesem Beispiel wird die Script-Funktion zum Erweitern eines JSON-Objekts mit neuen Werten verwendet:

:SET&JSON_DOC# = '{"OS": "Linux","disks": null, "isAvailable": false, "inventoryNumber":123}'
:SET&IS_AVAIL# = 1
:SET&RET#=JSON_SET_VALUE(&JSON_DOC#,'$.disks','[{"GB":2000, "type":"HDD"},{"GB":512, "type":"SSD"}]','JSON')
:SET&RET#=JSON_SET_VALUE(&JSON_DOC#,'$.disks',&IS_AVAIL#,'BOOLEAN')
:SET&RET#=JSON_SET_VALUE(&JSON_DOC#,'$.inventoryNumber','null')
:P&JSON_DOC#

Ergebnis des Aktivierungsreports

U00020408 {"OS":"Linux","disks":[{"GB":2000,"type":"HDD"},{"GB":512,"type":"SSD"}],"isAvailable":false,"inventoryNumber":null}

Tipp:

Manchmal ist es erforderlich, dass Sie Teile ihrer JSON-Dokumente auskommentieren (Escape), weil sie von einer separaten Entität verarbeitet werden. Sie können ein Escape für solche Teile festlegen, indem Sie den Cast-Typ string für das zitierte JSON-Unterdokument verwenden:

:SET &DOC# = '{"deploymentName": "hugeServer", "ansibleConf":""}'

:SET &QUOTED_SUBDOC# = '{"awsZone":"srvaws02"}'

:SET &RESULT# = JSON_SET_VALUE(&DOC#, '$.ansibleConf', &QUOTED_SUBDOC#, 'STRING')

:P &DOC#

!outputs {"deploymentName":"hugeServer","ansibleConf":"{\"awsZone\":\"srvaws02\"}"}

Siehe auch:

seealso

JSON-Verarbeitung