Difference between revisions of "LlJsonGetValue"
Jump to navigation
Jump to search
See also llJsonValueType for examples where the value type is checked before getting the value as that type.
m (<lsl> tag to <source>) |
|||
Line 9: | Line 9: | ||
|constants | |constants | ||
|examples= | |examples= | ||
< | <source lang="lsl2"> | ||
JGetValTest(){ | JGetValTest(){ | ||
string j="[[1,2],[4,5,6]]"; //JSON may be written directly as a string like this in sl. | string j="[[1,2],[4,5,6]]"; //JSON may be written directly as a string like this in sl. | ||
Line 35: | Line 35: | ||
// a JSON string, just values to test against. | // a JSON string, just values to test against. | ||
} | } | ||
</ | </source> | ||
See also [[llJsonValueType]] for examples where the value type is checked before getting the value as that type. | See also [[llJsonValueType]] for examples where the value type is checked before getting the value as that type. | ||
Revision as of 11:34, 22 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: string llJsonGetValue( string json, list specifiers );0.0 | Forced Delay |
10.0 | Energy |
Gets the value indicated by specifiers from the json string.
Returns a string made by parsing json, a string representing json and traversing as specified by specifiers.
• string | json | |||
• list | specifiers |
When the input is invalid or no result can be found this function returns JSON_INVALID. If the result is null
the function returns JSON_NULL.
Specification
Caveats
llJsonGetValue() is significantly slower than reading a value from a list with llList2String(). But with llList2String , you will need to parse your string and convert it to list . llJsonGetValue() is significantly faster when you will need to parse your string : for instance by llList2String( llParseString2List( yourstring , [ delimiters], [ spacers] ) , N ); When you need to iterate intensively , think about llJson2List.
Examples
JGetValTest(){
string j="[[1,2],[4,5,6]]"; //JSON may be written directly as a string like this in sl.
string k; //this will change with each command below;
k=llJsonGetValue(j,[]); //returns the whole array of a JSON. It might just be one entry or a whole nested array or whole nested object.
//if "j" is a single JSON_STRING, this may return what the string represents as a JSON within a string; a JSON_NUMBER , JSON_TRUE, TRUE ...
k=llJsonGetValue("\"3.14\"",[]); //==k="3,14" (float that was stored in a JSON_STRING within a JSON. and not as JSON_NUMBER for no good reason)
k=llJsonGetValue("\"TRUE\"" ,[]); //==k="TRUE" (the value was stored as a JSON_STRING and is thus returned verbatim)
k=llJsonGetValue(j,[0]); //returns only the first entry (at offset 0). An entry can be any JSON type,
//each entry being separated by a comma from other entries.
//array and object entries may contain multiple comma separated entries within them.
k=llJsonGetValue(j,[1]);//returns only the second entry... (all the above still applies) k="[4,5,6]";
k=llJsonGetValue(llJsonGetValue(j,[1]),[2]);
//instead of getting an entry from "j" we get a sub-entry from llJsonGetValue(j,[1]),
//assuming the sub-entry is a JSON_ARRAY. It returns the 3rd sub-entry of the second entry,
//that is an array with 3 entries. it would make k="6".
//it will return JSON_INVALID if there is no 3rd entry in the 2nd sub-array,
//or no 2nd sub-array.
k=llJsonGetValue(j,[1,2]); //Shorter way to do the same as in the previous example.
k=llJsonGetValue("true",[]); //Sets k to JSON_TRUE
k=llJsonGetValue("True",[]); //Sets k to JSON_INVALID because the JSON constant for 'true' is all lower case
k=llJsonGetValue("TRUE",[]); //Sets k to JSON_INVALID because the JSON constant for 'true' is all lower case
k=llJsonGetValue(JSON_TRUE,[]); //Sets k to JSON_INVALID. The JSON_xxxx constants are not supposed to be part of
// a JSON string, just values to test against.
}