JSONUPDATER
此转换器通过执行以下一个或多个操作来修改JSON文档:
- 向JSON对象或数组中插入新值
- 替换JSON对象或数组中的现有值
- 合并两个JSON对象或数组的内容
- 从JSON对象或数组中移除值
- 向JSON数组追加值
- 重命名JSON对象中的键。
对于每个文档更新,JSON路径表达式用于标识要修改的JSON对象或数组的位置。第二个参数命名要更改的特定对象键或数组索引。请注意,路径可能引用多个项。如果是这样的话,所有项目都将被修改。
对于替换现有项或插入新项的修改,给出了两个指定要添加到文档中的值的参数。这个值可以作为一个简单的文本值给出,或者它可能是一个函数表达式,JSON对象或JSON数组。
这个更新功能提供文档更新操作中使用的属性值。这个文件功能仅用于提供要更新的JSON文档。
对于进入更新端口,变压器中列出的所有更新操作将应用于通过文件端口。因此,如果没有特性通过更新端口。
注意,如果文件直接输入变压器参数,它可以通过两种不同的方式进行处理:
- 如果没有文件给出了变压器的特点。将创建一个新功能来存储文档。每个更新都将应用于文档,然后它将通过文件端口。
- 如果文件给出了变压器的特点。每个更新都将应用于文档,这些特性将由变压器输出。
输入端口
输入特性包含要修改的JSON文档。文档可以包含在属性中,直接进入变压器,或包含在属性值引用的文件中。
对于进入此输入端口的每个功能,变压器中列出的每个更新将在通过文件输入端口。这些功能将包含文档更新中使用的属性值。
输出端口
这个文件输入功能将通过这个端口输出。这些功能将包含更新的文档,将存储在结果属性参数中名为的属性中。
参数
变压器
此参数用于指定哪些更新功能将修改文档。当此参数设置为属性列表时,文件功能只能由更新为这些属性共享相同值的功能。文档将由具有相同属性值的所有更新功能修改。请注意,如果没有,文档将不会更新更新“分组依据”属性具有相同值的特性提供给变压器。
注:并行处理如何与FME一起工作:请参见关于并行处理有关详细信息。
此参数确定Transformer是否应跨并行进程执行工作。如果启用了,将为指定的每个组启动一个进程分组参数。
并行处理级别
参数 | 进程数 |
---|---|
无平行性 | 一 |
极小值 | 岩心处理器,或CPU,是执行数学计算的计算机的物理部分。它是计算机系统中最重要的部分。传统的处理器只有一个核心,意思是在任何给定的时间,仅执行一组计算。如果处理器是双核的,这意味着单芯片包含两个处理器的硬件,现在称之为核心,以区别于单芯片,同时运行,并排。(资料来源:http://www.ehow.com/facts_5730257_computer-core-processors_u.html)2 |
适度的 | 核心的确切数量 |
侵略性 | 核心X 1.5 |
极端 | 核心X 2 |
例如,在四核机器上,最小并行性将导致两个同时进行的FME过程。8核机器上的极端并行性将导致16个同步进程。
您可以尝试使用此功能,并在Windows任务管理器和工作台日志窗口中查看信息。
是的:此变压器将按顺序处理输入组。更改的值小组通过输入流上的参数将触发对当前累积组的批处理。如果群体较大/复杂,这将提高整体速度,但如果输入组没有真正排序,则可能会导致不需要的行为。
不:这是默认行为。只有当所有输入都存在时,处理才会在此变压器中进行。
JSON文档
此参数用于指定要修改的JSON文档的类型。JSON可能来自输入特性(参数值:文本或属性)。或者它可能来自外部文件。(参数值:json文件)
当json输入参数设置为“文本或属性”时,此参数用于指定JSON文本。参数可以设置为属性值,或者直接将JSON文档输入参数。
当json输入参数设置为'json file'时,此参数用于指定文件的位置。文件路径可以直接输入参数,或者路径可能来自属性值。
更新
更新表中的每一行指定一个更新操作。
此参数指定要应用于XML文档的修改类型。可能的更新包括:
更新类型 | 描述 |
---|---|
插入到对象中 |
在对象中插入新的键/值对。键的名称取自“对象/数组索引”列。插入的值取自值参数。 |
合并对象 |
将所有键/值对从一个对象复制到另一个对象。如果value参数不是JSON对象,或计算为对象的XQuery表达式,更新将失败。 |
插入到数组中 |
在数组中插入新值,在指定的位置。数组位置(从0开始计数)取自“对象/数组索引”列,应该是一个整数。新值取自“值”列。 |
追加到数组 |
将新值追加到数组的结尾。 |
合并数组 |
将一个数组中的所有值复制到另一个数组中。如果value参数不是JSON数组,或计算为数组的XQuery表达式,更新将失败。 |
替换对象值 |
替换对象键的值。要替换其值的键从“object/array index”参数中获取。 |
替换数组值 |
替换数组中指定位置的值。要替换的值的数组索引取自“对象/数组索引”列。索引应为整数。数组索引计数为0。 |
重命名对象键 |
更改对象键名称。要重命名的键取自“object/array index”参数。 |
从对象中删除 |
从对象中删除键/值对。要删除的键从“object/array index”参数中获取。 |
从数组中删除 |
从数组中移除值。要删除的值的数组索引取自“对象/数组索引”列。索引应为整数。数组索引计数为0。 |
此参数用于标识要更新的JSON对象或数组。对于修改特定对象键或数组索引的更新,使用“object/array index”参数标识键/索引。
JSON路径使用简单的文本语法通过JSON文档跟踪路由,从顶层对象或数组,到正在修改的对象或数组。
所有JSON文档必须有一个单独的对象或数组作为根值。在JSON路径中,这个根值由“json”关键字标识。因此,每个JSON路径都以这个关键字开头。方括号语法用于标识路径的每个级别。
整数可用于标识数组中的位置:
- json[0]—如果根值是一个数组,此路径引用数组中的第一个值。如果根值是一个对象,此路径不会解析为任何值。
- json[4]——如果根值是一个数组,此路径引用数组中的第五个值。
带引号的字符串可用于引用对象键的值:
- json[“location”]–如果根值是一个对象,此路径引用对象中“location”键的值。如果根值是数组,此路径不会解析为任何值。
- json[“features”]–指根对象中“features”键的值。
这些指数可以重复,让路径深入到JSON文档中。了解文件的结构很重要,以便索引(对象或数组)的类型是正确的。
- json[0][“location”]–此路径引用根数组中第一个元素中的“location”对象键。
- json[“features”[0][“location”]–此路径引用根对象的“features”数组中第一个项的“location key”值。例如,这可能适用于以下(不完整)文档:
{
“特征”:
“位置”:……}
]
}
通配符可用于引用数组的所有元素,或对象中的所有值。*字符用于表示通配符。
- json[*]–如果根值是一个数组,此路径引用数组中的所有值。如果根值是一个对象,此路径引用对象中所有键的值。
- JSON[*][位置]–此路径引用根对象或数组的所有子值的“位置”键。
- json[“features”][*]–此路径引用根对象中“features”键的值中包含的所有值。
为了在JSON路径中使用属性值,应使用@value fme函数。如果属性值是对象键,@value函数应该用引号括起来。
- json[@value(index)]–此路径引用根数组中“index”属性指定位置的项。
- json[“@value(key)”]–此路径指的是其键在“key”属性中命名的对象值。
注:path参数中使用的@value()函数将应用于更新正在处理的功能,不是文件正在更新的功能
此参数用于指定要插入/删除/修改其值的特定对象键/数组索引。
对于对象更新,此参数的值应为字符串,它将被解释为对象键。此参数中的字符串不需要引号。
对于阵列更新,此参数的值应为整数。请注意,数组索引从0开始。
此参数用于指示应如何解释值参数的值。在值参数的描述中解释了该参数不同值的影响。一般来说,如果转换器要将文本内容插入文档,则应将此参数设置为纯文本。如果Transformer打算在文档中插入JSON对象或数组,那么它应该设置为json/xquery,或者如果值是通过XQuery函数调用生成的。
此参数用于指定应插入到文档中的新值。如果值类型参数设置为纯文本,为了在XML文档中安全使用,将对该参数的内容进行编码。亚搏在线也就是说,双引号将转义为\“,反斜线转义为\\,等等。
如果值类型参数设置为json/xquery,此参数的内容将被解释为XQuery表达式。这允许在文档中插入JSON值元素。也,这允许使用FME XQuery函数。例如,JSON模板(例如,从杰森特普拉特变压器)可以作为参数值输入。然后在插入到文档中之前对其进行评估。
注:新值中使用的任何FME XQuery函数都将访问更新特征,不是文件特征。
参数
此参数指定Workbench是否应尝试验证传递给Value列中使用的任何XQuery函数的属性名。
此参数指定将写入更新的JSON文档的属性。默认值为结果.
编辑变压器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来指定变压器参数。更高级的功能,例如高级编辑器和算术编辑器,也可用于一些变压器。要访问这些选项的菜单,点击在适用参数旁边。更多信息,看见变压器参数菜单选项.
变压器类别
搜索FME知识中心
在上搜索有关此变压器的示例和信息FME知识中心.