Difference between revisions of "User:LepreKhaun Resident/Delete Json Element"
Jump to navigation
Jump to search
== More Json Tips, Tricks and Coding Examples ==
m (Added footer.) |
(Fixed case for a single item pathtoElement) |
||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
// Function: string deleteJsonElement( string jsonSource, list pathtoElement ); | // Function: string deleteJsonElement( string jsonSource, list pathtoElement ); | ||
// Version 1.5 9/7/2013 Fixed case for a single item pathtoElement | |||
// Version 1.0 by LepreKhaun, 6/21/2013. Free to copy, modify and use as one wishes with this comment included. | // Version 1.0 by LepreKhaun, 6/21/2013. Free to copy, modify and use as one wishes with this comment included. | ||
// This function takes a JSON text string and returns a copy of it with a specified element removed from it. | // This function takes a JSON text string and returns a copy of it with a specified element removed from it. | ||
Line 20: | Line 21: | ||
// Obtain the JSON object of the parent of the element | // Obtain the JSON object of the parent of the element | ||
string jsonParent = llJsonGetValue( jsonSource, | string jsonParent = llJsonGetValue( jsonSource, llDeleteSubList( pathtoElement, -1, -1 ) ); | ||
// Convert it to a list | // Convert it to a list |
Revision as of 03:09, 7 September 2013
// Function: string deleteJsonElement( string jsonSource, list pathtoElement ); // Version 1.5 9/7/2013 Fixed case for a single item pathtoElement // Version 1.0 by LepreKhaun, 6/21/2013. Free to copy, modify and use as one wishes with this comment included. // This function takes a JSON text string and returns a copy of it with a specified element removed from it. // jsonSource is the JSON text to remove an element from. // pathToElement is a List containing the transversal path to the element // (as defined as "specifiers" in http://wiki.secondlife.com/wiki/Json_usage_in_LSL ) // AND ending with the element to remove. // The element may be an array Value or the "Key" within an object // If the parent of the element is a JSON_ARRAY, the element to be removed must be an integer INDEX // If the parent of the element is a JSON_OBJECT, the element to be removed must be a string "KEY" // // NOTE: This code is not optimized nor does it contain any error checking!!! // Add whatever you feel is needed to ensure correct operation of your script. string deleteJsonElement( string jsonSource, list pathtoElement ) { integer placeinlist; // Obtain the JSON object of the parent of the element string jsonParent = llJsonGetValue( jsonSource, llDeleteSubList( pathtoElement, -1, -1 ) ); // Convert it to a list list listParent = llJson2List( jsonParent ); // Do test if (llJsonValueType( jsonParent, [] ) == JSON_ARRAY) { placeinlist = llList2Integer( pathtoElement, -1 ); listParent = llDeleteSubList( listParent, placeinlist, placeinlist ); // convert to a JSON object jsonParent = llList2Json( JSON_ARRAY, listParent ); } else // We are dealing with a JSON_OBJECT { placeinlist = llListFindList( listParent, llList2List( pathtoElement, -1, -1 ) ); listParent = llDeleteSubList( listParent, placeinlist, placeinlist + 1 ); // convert to a JSON object jsonParent = llList2Json( JSON_OBJECT, listParent ); } // Insert our results and return return llJsonSetValue( jsonSource, llList2List( pathtoElement, 0, -2 ), jsonParent ); }