<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
	<id>http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlJsonSetValue</id>
	<title>LlJsonSetValue - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlJsonSetValue"/>
	<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlJsonSetValue&amp;action=history"/>
	<updated>2026-06-01T03:38:31Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://i.bnu.edu.cn/wiki/index.php?title=LlJsonSetValue&amp;diff=721&amp;oldid=prev</id>
		<title>Ty：创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: string llJsonSetValue( string json, list specifiers, strin…”</title>
		<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlJsonSetValue&amp;diff=721&amp;oldid=prev"/>
		<updated>2020-08-20T12:06:36Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: string llJsonSetValue( string json, list specifiers, strin…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{函数详情&lt;br /&gt;
|函数名 = Function: string llJsonSetValue( string json, list specifiers, string value );&lt;br /&gt;
|参数= 参数：&lt;br /&gt;
string	json	–	source JSON data&lt;br /&gt;
list	specifiers	–	location of the of the value to be added, updated or deleted.&lt;br /&gt;
string	value	–	new value or JSON_DELETE flag.&lt;br /&gt;
|返回值= 返回值：&lt;br /&gt;
返回一个字符串&lt;br /&gt;
|注意事项=&lt;br /&gt;
Lllistreplacelist ()替换列表的单个值的速度大约是 lljsonsetvalue ()替换 json 中单个值的速度的2.8倍。列表/json 的长度在这里无关紧要。&lt;br /&gt;
|示例=&lt;br /&gt;
示例一&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string TEST_STRING_JSON;&lt;br /&gt;
 &lt;br /&gt;
init()&lt;br /&gt;
{&lt;br /&gt;
    TEST_STRING_JSON = &amp;quot;[9,\&amp;quot;&amp;lt;1,1,1&amp;gt;\&amp;quot;,false,{\&amp;quot;A\&amp;quot;:8,\&amp;quot;Z\&amp;quot;:9}]&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;Original TEST_STRING_JSON: &amp;quot; + TEST_STRING_JSON);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
run_json_test(string input)&lt;br /&gt;
{&lt;br /&gt;
    string output;&lt;br /&gt;
 &lt;br /&gt;
//  changing values within the json string&lt;br /&gt;
 &lt;br /&gt;
//  change the first value in the array to 10&lt;br /&gt;
    output = llJsonSetValue(input, [0], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [10,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;( 1): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  change the third value in the array to 'true'&lt;br /&gt;
    output = llJsonSetValue(input, [2], JSON_TRUE);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,true,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;( 2): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  change the value of &amp;quot;A&amp;quot; within the Json object to 3&lt;br /&gt;
    output = llJsonSetValue(input, [3, &amp;quot;A&amp;quot;], &amp;quot;3&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:3,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;( 3): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  adding a value or new key-value-pair within the input&lt;br /&gt;
 &lt;br /&gt;
//  add the value &amp;quot;Hello&amp;quot; to the end of the array&lt;br /&gt;
//      NOTE: One cannot insert, only add to the end&lt;br /&gt;
    output = llJsonSetValue(input, [JSON_APPEND], &amp;quot;Hello&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9},&amp;quot;Hello&amp;quot;]&lt;br /&gt;
    say(&amp;quot;( 4): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  add the key-value-pair &amp;quot;B&amp;quot;:10 to the object&lt;br /&gt;
    output = llJsonSetValue(input, [3, &amp;quot;B&amp;quot;], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;B&amp;quot;:10,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;( 5): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
//  Things to look out for when modifying Json text&lt;br /&gt;
//      ~!~ Be careful when using this function ~!~&lt;br /&gt;
 &lt;br /&gt;
//  out of bounds array assignment:&lt;br /&gt;
//      defined as attempting to add a value to a position ...&lt;br /&gt;
//      ...greater than the length of the array (which may be 0)&lt;br /&gt;
//      JSON_APPEND is ALWAYS the preferred way to add to an array&lt;br /&gt;
    output = llJsonSetValue(input, [5], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  %EF%B7%90 (URL escaped JSON_INVALID)&lt;br /&gt;
    say(&amp;quot;( 6): &amp;quot; + llEscapeURL(output));&lt;br /&gt;
 &lt;br /&gt;
//  BUT, this works, since it is in bounds&lt;br /&gt;
//      (eqivalent to JSON_APPEND in this case)&lt;br /&gt;
    output = llJsonSetValue(input, [4], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9},10]&lt;br /&gt;
    say(&amp;quot;( 7): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  careless formation of new arrays&lt;br /&gt;
//      ( the 4 and all subsequent 0's are all in bounds.)&lt;br /&gt;
    output = llJsonSetValue(input, [4, 0, 0, 0], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9},[[[10]]]]&lt;br /&gt;
    say(&amp;quot;( 8): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  overwriting an object with an array:&lt;br /&gt;
//      ~!~ mistaken use of JSON_APPEND on an object ~!~&lt;br /&gt;
    output = llJsonSetValue(input, [3, JSON_APPEND], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,[10]]&lt;br /&gt;
    say(&amp;quot;( 9): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  careless formation of new objects&lt;br /&gt;
//      NOTE: &amp;quot;Key&amp;quot; assignemts will NEVER result in a return of JSON_INVALID!&lt;br /&gt;
    output = llJsonSetValue(input, [3, &amp;quot;W&amp;quot;, &amp;quot;X&amp;quot;], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;W&amp;quot;:{&amp;quot;X&amp;quot;:10},&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;(10): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
    output = llJsonSetValue(input, [3, &amp;quot;W&amp;quot;, &amp;quot;X&amp;quot;, &amp;quot;Y&amp;quot;], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:8,&amp;quot;W&amp;quot;:{&amp;quot;X&amp;quot;:{&amp;quot;Y&amp;quot;:10}},&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;(11): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  overwriting an array with an object&lt;br /&gt;
    output = llJsonSetValue(input, [&amp;quot;X&amp;quot;], &amp;quot;10&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  {&amp;quot;X&amp;quot;:10}&lt;br /&gt;
    say(&amp;quot;(12): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  special case considerations:&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
//  BUG-3692: (NOTE: Corrected in release 13.09.21.281328!)&lt;br /&gt;
//      a bug where, instead of JSON_INVALID being returned, if the out of&lt;br /&gt;
//      bounds index is at a lower level than the topmost (root) level, a&lt;br /&gt;
//      non-compliant JSON text would be formed&lt;br /&gt;
    output = llJsonSetValue(input, [1, 7], &amp;quot;Disappearing Text&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//  Note the &amp;quot;empty&amp;quot; second position that resulted in the returned array&lt;br /&gt;
//  [9,,false,{&amp;quot;A&amp;quot;:8,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
// (But now correctly shows JSON_INVALID)&lt;br /&gt;
    say(&amp;quot;(13): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  though there is no way to directly delete a key-value-pair &lt;br /&gt;
//  nor remove a value from an array,&lt;br /&gt;
//  the use of JSON_NULL may prove adequate&lt;br /&gt;
    output = llJsonSetValue(input, [3, &amp;quot;A&amp;quot;], JSON_NULL);&lt;br /&gt;
 &lt;br /&gt;
//  [9,&amp;quot;&amp;lt;1,1,1&amp;gt;&amp;quot;,false,{&amp;quot;A&amp;quot;:null,&amp;quot;Z&amp;quot;:9}]&lt;br /&gt;
    say(&amp;quot;(14): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  if a JSON text object has been formed with llList2Json()&lt;br /&gt;
//  that contains one or more duplicated &amp;quot;Keys&amp;quot;, (allowable&lt;br /&gt;
//  but NOT recommended!) ANY change&lt;br /&gt;
//  made to that object will correct the condition,&lt;br /&gt;
//  with all but the last such &amp;quot;Key&amp;quot; being removed&lt;br /&gt;
    output = llList2Json(JSON_OBJECT, [&amp;quot;A&amp;quot;, 1, &amp;quot;A&amp;quot;, 2, &amp;quot;A&amp;quot;, 3, &amp;quot;B&amp;quot;, 4, &amp;quot;B&amp;quot;, 4]);&lt;br /&gt;
 &lt;br /&gt;
//  both Keys &amp;quot;A&amp;quot; and &amp;quot;B&amp;quot; are duplicated&lt;br /&gt;
//  {&amp;quot;A&amp;quot;:1,&amp;quot;A&amp;quot;:2,&amp;quot;A&amp;quot;:3,&amp;quot;B&amp;quot;:4,&amp;quot;B&amp;quot;:4}&lt;br /&gt;
    say(&amp;quot;(15): &amp;quot; + output);&lt;br /&gt;
 &lt;br /&gt;
//  only the last value of the duplications is accessable though&lt;br /&gt;
 &lt;br /&gt;
//  3&lt;br /&gt;
    say(&amp;quot;(16): &amp;quot; + llJsonGetValue(output, [&amp;quot;A&amp;quot;]));&lt;br /&gt;
 &lt;br /&gt;
//  condition corrected by adding a key-value-pair...&lt;br /&gt;
 &lt;br /&gt;
//  {&amp;quot;A&amp;quot;:3,&amp;quot;B&amp;quot;:4,&amp;quot;Z&amp;quot;:5}&lt;br /&gt;
    say(&amp;quot;(17): &amp;quot; + llJsonSetValue(output, [&amp;quot;Z&amp;quot;], &amp;quot;5&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
//  ... or by changing a value&lt;br /&gt;
 &lt;br /&gt;
// {&amp;quot;A&amp;quot;:5,&amp;quot;B&amp;quot;:4}&lt;br /&gt;
    say(&amp;quot;(18): &amp;quot; + llJsonSetValue(output, [&amp;quot;A&amp;quot;], &amp;quot;5&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
say(string message)&lt;br /&gt;
{&lt;br /&gt;
    llOwnerSay(message);&lt;br /&gt;
//  llRegionSayTo(llGetOwner(), PUBLIC_CHANNEL, message);&lt;br /&gt;
//  llWhisper(PUBLIC_CHANNEL, message);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        init();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_end(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
//      copy 'TEST_STRING_JSON' from the following function call&lt;br /&gt;
//      to the string 'input' in the function declaration&lt;br /&gt;
//      and run a test on 'input' to not (!) modify 'TEST_STRING_JSON'&lt;br /&gt;
//      but its copy instead&lt;br /&gt;
        run_json_test(TEST_STRING_JSON);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|相关函数=&lt;br /&gt;
[[llList2Json]]&lt;br /&gt;
[[llJson2List]]&lt;br /&gt;
[[llJsonGetValue]]&lt;br /&gt;
[[llJsonValueType]]&lt;br /&gt;
|相关事件=无&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Ty</name></author>
		
	</entry>
</feed>