{{ transformations:ModifyJsonAction.png}} ======MODIFY JSON====== Category: Transform / Web \\ \\ =====Description===== This action modifies aspects of a [[https://en.wikipedia.org/wiki/JSON|JSON]] object. Commands this action can run are: * Change property value * Add property * Delete property * Rename property * Reformat JSON \\ =====Action settings===== ^Setting ^Description ^ |Column|Select the column that contains the JSON to be modified.| |Command|Select the modification to run on the selected JSON. Options: //Change property value//, //Add property//, //Delete property//, //Rename property//, or //Format JSON//. See below for the details of each command.| |If the node doesn't exist|Chose how EasyMorph will handle cases when the selected node doesn't exist in the dataset. Options: //Fail// (the workflow halts execution with a warning) or //Ignore// (the workflow continues).| \\ ====Change property value settings==== Description: Changes the value of the select JSON path (key). ^Setting^ Description ^ |JSON Path|Select the path/key to change the value of.| |Replace with*|Enter the value to be inserted.| |The inserted values are dates|Check this option //on// if the values are dates.| * Setting can be specified using a [[:parameters|parameter]].\\ \\ ====Add property options==== Description: Adds a new property under the selected Parent node. ^Option^ Description ^ |Parent|Select the node to insert the new property under.| |Node name*|Enter the name of the new property.| |Node value*|Enter the value of the new property.| |The inserted values are dates|Check this option //on// if the values are dates.| * Setting can be specified using a [[:parameters|parameter]].\\ \\ ====Delete property options==== Description: Removes a property from the JSON in the selected column. ^Option^ Description ^ |JSON Path|Select the node to remove the property from.| \\ ====Rename property options==== Description: Renames a property in the selected JSON path. ^Option^ Description ^ |JSON Path|Select the path to be renamed.| |New name|Enter the new name of the selected path.| \\ ====Format JSON options==== Description: Converts the format of the JSON text from a single-cell string to a tree structure, or the reverse. ^Option^ Description ^ |Make readable|This option converts the JSON from a single-cell text value to a more readable nested structure.| |Minimize size|This option converts the JSON from a nested structure to a single-cell text value.| \\ =====Remarks===== Wildcards like "$" (for root node), and "[*]" (for an array) can be used where JSON Paths and nodes need to be selected/entered. \\ =====Examples===== \\ ====Change property value==== **Source JSON:** { "name":"Doug", "id":7, "dept":"Accounting" } \\ **Action parameters:** > JSON Path is "name" > Replace with "(insert name)" \\ **Result:**\\ { "name":"(insert name)", "id":7, "dept":"Accounting" } \\ \\ ====Add property==== **Source JSON:** { "name":"Doug", "id":7, "dept":"Accounting" } \\ **Action parameters:** > Parent is "$" (root node) > Node name is "age" > Node value is 50 \\ **Result:**\\ { "name":"(insert name)", "id":7, "dept":"Accounting", "age":50 } \\ \\ ====Delete property==== **Source JSON:** { "name":"Doug", "id":7, "dept":"Accounting" } \\ **Action parameters:** > JSON Path is "id" \\ **Result:**\\ { "name":"(insert name)", "dept":"Accounting" } \\ \\ ====Rename property==== **Source JSON:** { "name":"Doug", "id":7, "dept":"Accounting" } \\ **Action parameters:** > JSON Path is "id" > Replace with "ident" \\ **Result:**\\ { "name":"(insert name)", "ident":7, "dept":"Accounting" } \\ \\ ====Format JSON (Minimize size)==== **Source JSON:** { "name":"Doug", "id":7, "dept":"Accounting" } \\ **Action parameters:** > "Minimize size" \\ **Result:**\\ {"name":"(insert name)","ident":7,"dept":"Accounting"} \\ \\ ===Format JSON (Make readable)=== **Source JSON:** {"name":"(insert name)","ident" 7,"dept":"Accounting"} \\ **Action parameters:** > "Make readable" \\ **Result:**\\ { "name":"Doug", "id":7, "dept":"Accounting" } \\ ===== See also ===== * [[transformations:extractjson|Extract JSON properties]] * [[transformations:parsejson|Parse JSON]] * [[transformations:splitjsonarray|Split JSON array]] * [[syntax:functions:isjson|Functions: IsJson()]] * [[https://community.easymorph.com/t/example-constructing-json/1279/5|Community example: Constructing JSON]]