JSONFragmenter
提取部分JSON (JavaScript对象表示法)格式的文本到新的FME功能。
输出端口
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
对于每个新创建的特性,属性标识为输出属性参数将包含JSON查询引用的JSON文本。
json_type属性将包含文本的JSON类型(对象,数组,字符串等),而json_index参数将包含JSON值的对象键或数组索引。
如果无法完全计算JSON查询,将记录一条消息,并继续转换。
参数
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
源JSON文档。JSON文档可以来自任何字符串表达式,包括属性值和工作空间参数。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
JSON查询参数是引用JSON值的JSON查询,这将成为新的FME特性。
JSON查询是一种引用JSON文本中的值的机制。最外层的JSON值必须是一个对象或数组,通常用术语“JSON”来表示。包含的值可以使用类似于javascript的方括号索引操作符来引用。数组中的值可以使用它在数组中的从零开始的位置来引用(例如,json[2]表示第三个元素)。
可以使用对象键名引用对象中的值。例如:
json(“关键”)
数组或对象中的所有值都可以使用通配符索引一起引用。例如:
json (*)
这个转换器使用的查询可以有多个表达式,由一个“+”操作符分隔。这允许转换器引用JSON文本中不同区域的值。例如:
json(“resultSet_1”][*]+ json(“resultSet_2”)(*)
关于JSON查询的更多信息见下面。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
包含JSON片段的属性的名称。
压扁的参数
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
如果JSON查询生成一个JSON对象,则可以将键设置为为新特性生成额外的属性是的.如果JSON查询生成一个JSON数组,并且向为新属性添加前缀参数,将创建一个列表属性,使用前缀作为列表名称,JSON数组值作为列表元素。
注意:属性列表不能从Workbench中的输出模式访问,除非首先使用对它们进行操作的转换器进行处理,例如ListExploder或ListConcatenator.下面的Transformer Help的Contents窗格中显示了所有列表属性Transformer列表.另外,AttributeExposer可以使用。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
当“Load Keys as Attributes”参数设置为“Yes”时,该参数控制创建的属性。如果设置为“No”,每个JSON对象键将成为一个属性,对应的JSON值将成为属性值。如果将此参数设置为“Yes”,则只有简单类型(整数、字符串等)的对象值将成为属性值,而嵌套的对象和数组将被递归扁平化。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
如果“Load Keys as Attributes”参数设置为“Yes”,则“Prefix New Attributes With”参数可用于提供一个字符串,用于为新创建的属性添加前缀。如果选择的格式是GeoJSON或ESRIJSON,特定于格式的键将不会作为属性添加,而是由适当的格式解析器处理。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/../Skins/Default/Stylesheets/Images/transparent.gif)
公开任何属性,以便其他转换器可以使用它们。直接在文本框中键入或单击浏览按钮以显示编辑器并在那里添加属性。
JSON查询
JSON查询是一种引用JSON文档中的值的简单机制。查询由一个或多个表达式组成,它们由+运算符分隔。有三种类型的表达式:JSON结构表达式,JSON属性表达式和字符串文字表达式。
JSON结构表达式
JSON结构表达式可以引用JSON文档中的值。最外层的JSON元素必须是一个数组或一个对象,它总是用术语JSON来引用,并且这个术语必须出现在每个JSON结构表达式的开头。可以使用类似于javascript的方括号索引操作符来引用子元素。例如,如果最外层的元素是一个数组,那么数组的第一个元素可以由表达式json[0]引用,第二个元素可以由表达式json[1]引用,以此类推。同样,如果最外层的JSON元素是一个对象,具有键“name”和“address”,那么这些键的值可以分别由表达式JSON[“name”]和JSON[“address”]引用。
这些索引操作符可以级联。例如,最外层的JSON元素是一个带有键和“address”的对象,其值是一个包含键“city”和“province”的对象,那么这些值可以通过表达式JSON ["address"]["city"]和JSON ["address"]["province"]来引用。
为了引用数组或对象中的所有值,可以使用通配符索引*。例如,如果最外层的JSON元素是一个数组,那么表达式JSON[*]指向数组中的每个元素。
JSON属性表达式
属性表达式是如上所述的结构表达式,后面跟着。(点)操作符和属性名。目前,唯一支持的属性是type和size。type属性返回JSON结构表达式引用的JSON值的类型。例如,如果最外层的JSON元素是一个数组,而数组的第一个元素是一个字符串,那么表达式JSON[0]。类型的值为string。size属性只能应用于数组,它返回数组中元素的数量。
字符串表达式
字符串字面量表达式就是一个引用的字符串值,比如"this is A string literal expression"。
FME授权级别
FME专业版及以上版本
编辑变压器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来分配转换器参数。更高级的功能,比如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击除了适用的参数。有关更多信息,请参见变压器参数菜单选项.
变压器的分类
搜索FME知识中心
搜索关于这个变压器的样品和信息FME知识中心.
标签关键词:JSONExploder