查看“LlJsonSetValue”的源代码
←
LlJsonSetValue
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: string llJsonSetValue( string json, list specifiers, string value ); |参数= 参数: string json – source JSON data list specifiers – location of the of the value to be added, updated or deleted. string value – new value or JSON_DELETE flag. |返回值= 返回值: 返回一个字符串 |注意事项= Lllistreplacelist ()替换列表的单个值的速度大约是 lljsonsetvalue ()替换 json 中单个值的速度的2.8倍。列表/json 的长度在这里无关紧要。 |示例= 示例一 <pre> string TEST_STRING_JSON; init() { TEST_STRING_JSON = "[9,\"<1,1,1>\",false,{\"A\":8,\"Z\":9}]"; // [9,"<1,1,1>",false,{"A":8,"Z":9}] say("Original TEST_STRING_JSON: " + TEST_STRING_JSON); } run_json_test(string input) { string output; // changing values within the json string // change the first value in the array to 10 output = llJsonSetValue(input, [0], "10"); // [10,"<1,1,1>",false,{"A":8,"Z":9}] say("( 1): " + output); // change the third value in the array to 'true' output = llJsonSetValue(input, [2], JSON_TRUE); // [9,"<1,1,1>",true,{"A":8,"Z":9}] say("( 2): " + output); // change the value of "A" within the Json object to 3 output = llJsonSetValue(input, [3, "A"], "3"); // [9,"<1,1,1>",false,{"A":3,"Z":9}] say("( 3): " + output); // adding a value or new key-value-pair within the input // add the value "Hello" to the end of the array // NOTE: One cannot insert, only add to the end output = llJsonSetValue(input, [JSON_APPEND], "Hello"); // [9,"<1,1,1>",false,{"A":8,"Z":9},"Hello"] say("( 4): " + output); // add the key-value-pair "B":10 to the object output = llJsonSetValue(input, [3, "B"], "10"); // [9,"<1,1,1>",false,{"A":8,"B":10,"Z":9}] say("( 5): " + output); // Things to look out for when modifying Json text // ~!~ Be careful when using this function ~!~ // out of bounds array assignment: // defined as attempting to add a value to a position ... // ...greater than the length of the array (which may be 0) // JSON_APPEND is ALWAYS the preferred way to add to an array output = llJsonSetValue(input, [5], "10"); // %EF%B7%90 (URL escaped JSON_INVALID) say("( 6): " + llEscapeURL(output)); // BUT, this works, since it is in bounds // (eqivalent to JSON_APPEND in this case) output = llJsonSetValue(input, [4], "10"); // [9,"<1,1,1>",false,{"A":8,"Z":9},10] say("( 7): " + output); // careless formation of new arrays // ( the 4 and all subsequent 0's are all in bounds.) output = llJsonSetValue(input, [4, 0, 0, 0], "10"); // [9,"<1,1,1>",false,{"A":8,"Z":9},[[[10]]]] say("( 8): " + output); // overwriting an object with an array: // ~!~ mistaken use of JSON_APPEND on an object ~!~ output = llJsonSetValue(input, [3, JSON_APPEND], "10"); // [9,"<1,1,1>",false,[10]] say("( 9): " + output); // careless formation of new objects // NOTE: "Key" assignemts will NEVER result in a return of JSON_INVALID! output = llJsonSetValue(input, [3, "W", "X"], "10"); // [9,"<1,1,1>",false,{"A":8,"W":{"X":10},"Z":9}] say("(10): " + output); output = llJsonSetValue(input, [3, "W", "X", "Y"], "10"); // [9,"<1,1,1>",false,{"A":8,"W":{"X":{"Y":10}},"Z":9}] say("(11): " + output); // overwriting an array with an object output = llJsonSetValue(input, ["X"], "10"); // {"X":10} say("(12): " + output); // special case considerations: // BUG-3692: (NOTE: Corrected in release 13.09.21.281328!) // a bug where, instead of JSON_INVALID being returned, if the out of // bounds index is at a lower level than the topmost (root) level, a // non-compliant JSON text would be formed output = llJsonSetValue(input, [1, 7], "Disappearing Text"); // Note the "empty" second position that resulted in the returned array // [9,,false,{"A":8,"Z":9}] // (But now correctly shows JSON_INVALID) say("(13): " + output); // though there is no way to directly delete a key-value-pair // nor remove a value from an array, // the use of JSON_NULL may prove adequate output = llJsonSetValue(input, [3, "A"], JSON_NULL); // [9,"<1,1,1>",false,{"A":null,"Z":9}] say("(14): " + output); // if a JSON text object has been formed with llList2Json() // that contains one or more duplicated "Keys", (allowable // but NOT recommended!) ANY change // made to that object will correct the condition, // with all but the last such "Key" being removed output = llList2Json(JSON_OBJECT, ["A", 1, "A", 2, "A", 3, "B", 4, "B", 4]); // both Keys "A" and "B" are duplicated // {"A":1,"A":2,"A":3,"B":4,"B":4} say("(15): " + output); // only the last value of the duplications is accessable though // 3 say("(16): " + llJsonGetValue(output, ["A"])); // condition corrected by adding a key-value-pair... // {"A":3,"B":4,"Z":5} say("(17): " + llJsonSetValue(output, ["Z"], "5")); // ... or by changing a value // {"A":5,"B":4} say("(18): " + llJsonSetValue(output, ["A"], "5")); } say(string message) { llOwnerSay(message); // llRegionSayTo(llGetOwner(), PUBLIC_CHANNEL, message); // llWhisper(PUBLIC_CHANNEL, message); } default { on_rez(integer start_param) { llResetScript(); } state_entry() { init(); } touch_end(integer num_detected) { // copy 'TEST_STRING_JSON' from the following function call // to the string 'input' in the function declaration // and run a test on 'input' to not (!) modify 'TEST_STRING_JSON' // but its copy instead run_json_test(TEST_STRING_JSON); } } </pre> |相关函数= [[llList2Json]] [[llJson2List]] [[llJsonGetValue]] [[llJsonValueType]] |相关事件=无 }}
该页面使用的模板:
模板:LSL Header
(
查看源代码
)
模板:LSLC
(
查看源代码
)
模板:LSLGC
(
查看源代码
)
模板:Multi-lang
(
查看源代码
)
模板:函数详情
(
查看源代码
)
返回至
LlJsonSetValue
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
网站首页
知识百科
编辑帮助
最近更改
工具
链入页面
相关更改
特殊页面
页面信息