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