lr_json_replace
Replaces a node in a JSON object.
C Language
int lr_json_replace( "JsonObject=<parameter name>", "Value or ValueParam or JsonNode=<value>", "QueryString=<query>", ["SelectAll=<Yes|No>",] ["NotFound=<Error|Continue>",] LAST );
Example | Parameter Functions |
Arguments
Name | Comments |
---|---|
JsonObject | The name of the parameter that stores the handle of the JSON object created by lr_eval_json. |
QueryString | The JSON path of the node to be replaced. |
Value | The key-value pair to replace the target of the QueryString. Both the key and the value of the node that matches the query are replaced. The key-value pair can be bracketed or not. For example: |
ValueParam | The name of the parameter containing the key-value pair to replace the target of the QueryString. |
JsonNode | The name of a parameter containing the handle of the JSON object created by lr_eval_json The object referenced by JsonNode replaces the QueryString match in the object referenced by JsonObject. |
SelectAll | Optional: If SelectAll=Yes, the Value is inserted at every location that matches the query. If SelectAll=No, the Value is inserted at the first location that matches the query. Default is No |
NotFound | Optional. One of:
|
LAST | Required marker for the end of the argument list. |
lr_json_replace replaces the node or nodes specified by the query with the key-value pair passed in the Value, ValueParam, or JsonNode arguments.
Use lr_json_replace to change the name and value of the matched node. If you want to change the value but not the name, you can use lr_json_set_values.
If more than one key-value pair is passed in Value or ValueParam, only the first is used.
This function is not recorded. You can insert it manually into your script.Return Values
The number of matches.
Parameterization
Parameterization is not applicable to this function.
Example
This script shows the usage of lr_json_replace.
TestReplace() { int i = 0; // See File: store.json lr_eval_json("Buffer/File=store.json", "JsonObject=r_json_obj", LAST); /* Change "name": "Black Books" to "owner":"Mr Black".*/ i = lr_json_replace("JsonObject=r_json_obj", "Value=\"\owner\":\"Mr Black\"", "QueryString=$.store.name", LAST); if (i != 1) lr_error_message("lr_json_replace should return %d, but returns %d", 1, i); lr_save_string("$.store.books[*].isbn", "r_path_isbn"); i = lr_json_replace("JsonObject=r_json_obj", "Value=\"discount\":\"20 percent\"", "QueryString={r_path_isbn}", "SelectAll=Yes", LAST); if (i != 2) lr_error_message("lr_json_replace should return %d, but returns %d", 2, i); lr_json_stringify("JsonObject=r_json_obj", "OutputParam=r_result", LAST); return 0; }
TestReplace.c(40): lr_json_replace succeed, 1 match
TestReplace.c(50): Notify: Saving Parameter "r_path_isbn = $.store.books[*].isbn".
TestReplace.c(52): Notify: Parameter Substitution: parameter "r_path_isbn" = "$.store.books[*].isbn"
TestReplace.c(52): lr_json_replace succeed, 2 matches
TestReplace.c(60): Notify: Saving Parameter "r_result = {"store":{"owner":"Mr Black","address":"No 20, J Rd","books":[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","discount":"20 percent","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","discount":"20 percent","price":22.99}]}}".