JSONSetElement
在 JSON 数据中添加或修改由对象名、数组索引或路径指定的元素。
格式
JSONSetElement(json;键或索引或路径;值;类型)
参数
json
- 包含 JSON 对象或数组的文本表达式或字段。
键或索引或路径
- 指定 JSON 对象名(键)、数组索引或路径的文本表达式或字段。请参阅使用 JSON 函数。
值
- 包含数字、文本或 JSON 数据的表达式或字段。
类型
- 指定要设置的数据类型的数值(参阅下文)。
返回的数据类型
文本
原始版本
16.0
说明
此函数返回 json
,值
设置为指定的键或索引或路径
。如果 json
参数是空白 (""),此函数会向 JSON 对象添加值
(在括号 { } 中),除非键或索引或路径
参数的第一部分以“[”字符开始。此时,此函数向 JSON 数组(在括号 [ ] 中)添加值
。
对于类型
参数,使用以下值之一。值
添加到 json
时,类型
参数指定是将值
转换为特定 JSON 类型还是插入值
而不改变类型。
|
|
输出类型 |
|
FileMaker 文本 |
JSON 字符串 (" ") |
|
FileMaker 数字 |
JSON 数字 |
|
JSON 对象 |
JSON 对象 ( { } ) |
|
JSON 数组 |
JSON 数组 ( [ ] ) |
|
FileMaker 值或 JSON 布尔值 |
JSON 布尔值 |
|
忽略类型 |
JSON 空值 |
|
JSON 元素 |
JSON 元素(如果 |
-
您可以使用括号中显示的命名常数或数值来指定
类型
,例如,JSONString
或 1—不带引号。
对于 JSONBoolean
,如果值
为 “真”(True)
或非零数字,则将其视为真;如果值
为 “假”(False)
或 0,则将其视为 false。否则,按 If 函数中 test
参数的方式来确定值
为“真” (True)还是“假” (False)。
对于 JSONRaw
,JSON 分析器处理值
来确定其是否使用有效的 JSON 语法。如果值
是有效的 JSON,此函数的返回值中会使用分析得出的结果,而不将任何元素转换为 JSON 数据类型。值
中第一个 JSON 元素后的所有字符都将被忽略,例如,如果值
为“4,2”,则仅插入“4”,因为在 JSON 语法中,逗号是元素之间的分隔符。如果值
不是有效的 JSON,则在返回的值中将值
转换为 JSON 字符串。
可以在括号 [ ] 中为每个元素再提供一组键或索引或路径
、值
和类型
参数,从而设置多个元素。以下语法一次设置 N 个元素:
JSONSetElement ( json ; [ 键或索引或路径1 ; 值1 ; 类型1 ] ; [ 键或索引或路径2 ; 值2 ; 类型2 ] ; ... [ 键或索引或路径N ; 值N ; 类型N ]
)
示例 1
向 JSON 对象的根添加一个键及其值。
JSONSetElement ( "{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber )
返回 {"a":11,"b":22.23}.
示例 2
创建数组,使用 "[+]"
语法添加一个元素(JSON 对象),然后使用 "[:]"
语法将该元素引用为数组中的最后一个元素,以将另一个键-值对添加到对象。
JSONSetElement( "[]";
["[+].a", 5, JSONNumber] ;
["[:].b", 6, JSONNumber]
)
返回 [{"a":5,"b":6}]。
示例 3
添加一个 JSON 对象作为另一个 JSON 对象的元素。如果 $$JSON 变量设置为
则
JSONFormatElements (
JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73 } " ;
JSONObject
)
)
返回
示例 4
在 $$JSON 变量中存储的JSON 数据示例中,更改数组中第一个“产品”元素的“特价”和“现货”键的值。
JSONFormatElements ( JSONSetElement ( $$JSON ; [ "面包店.产品[0].特价" ; 0 ; JSONBoolean ] ; [ "面包店.产品[0].现货" ; 0 ; JSONNumber ]
)
)
返回的数据与“产品”数组的第一个元素经如下更改后的 $$JSON 相同