JSONFragmenter
Extracts portions of JSON (JavaScript Object Notation) formatted text into new FME features.
Output Ports
For each newly created feature, the attribute identified by the JSON Attribute parameter will contain JSON text referred to by the JSON query.
The json_type attribute will contain the JSON type of the text (object, array, string, etc) and the json_index parameter will contain the object key or array index of the JSON value.
If the JSON query cannot be fully evaluated, a message will be logged, and the translation will continue.
Parameters
The JSON Attribute parameter identifies the feature attribute which contains the original JSON text.
For each newly created feature that is output through the Exploded port, the attribute identified by this parameter will contain JSON text referred to by the JSON query.
The JSON Query parameter is the JSON query referring to the JSON values which will become new FME features.
A JSON query is a mechanism to refer to values inside JSON text. The outermost JSON value, which must be an object or an array, is always referred to by the term "json". Contained values can be referred to using JavaScript-like square bracket index operators. A value in an array can be referred to using its zero-based position in the array (for example, json[2] for the third element).
A value in an object can be referred to using its object key name. For example:
json["key"]
All of the values in an array or object can be referred to collectively using a wildcard index. For example:
json[*]
The query used by this transformer can have multiple expressions, separated by a '+' operator. This allows the transformer to refer to values in different areas of the JSON text. For example:
json["resultSet_1"][*] + json["resultSet_2"][*]
See below for more information on JSON queries.
If the JSON text is in GeoJSON or EsriJSON format, you can select "Explode as format" to "GEOJSON" or "ESRIJSON". This will inform JSONQueryFactory that GeoJSON or ESRIJSON features need to be automatically recognized and extracted from the query results.
The default format, "JSON", parses the JSON text as plain JSON. If no GeoJSON or ESRIJSON features were constructed, a warning will be issued and the text will be treated as plain JSON.
If the JSON query produces a JSON Object, the keys may be used to produce additional attributes for the new feature(s) by setting ‘Load Keys as Attributes’ to ‘Yes’. If the JSON query produces a JSON array, and a value is provided to the ‘Prefix New Attributes With’ parameter, a list attribute will be created, using the prefix as the list name, and the JSON array values as the list elements.
Note: Attribute lists are not accessible from the output schema in Workbench unless they are first processed using a transformer that operates on them, such as ListExploder or ListConcatenator. All attribute list transformers are displayed in the Contents pane of the Transformer Help under Lists. Alternatively, AttributeExposer can be used.
When the ‘Load Keys as Attributes’ parameter is set to ‘Yes’, this parameter controls the attributes which are created. If it is set to ‘No’, each JSON object key will become an attribute and the corresponding JSON value will become the attribute value. If this parameter is set to ‘Yes’, only object values which are simple types (integers, strings, etc) will become attribute values, while nested objects and arrays will be recursively flattened.
If the ‘Load Keys as Attributes’ parameter is set to ‘Yes’, the ‘Prefix New Attributes With’ parameter may be used to provide a string with which to prefix the newly-created attributes. If the selected format is GeoJSON or ESRIJSON, the format-specific keys will not be added as attributes, but will instead be handled by the appropriate format parser.
Exposes any attributes so they can be used by other transformers. Type directly in the text box or click the browse button to display the editor and add attributes there.
JSON Queries
A JSON query is a simple mechanism to refer to values within a JSON document. A query is made up of one or more expressions, which are separated by a + operator. There are three types of expressions: JSON structure expressions, JSON property expressions and string literal expressions.
JSON Structure Expressions
A JSON structure expression can refer to values in a JSON document. The outermost JSON element, which must be an array or an object, is always referred to by the term json, and this term must appear at the beginning of every JSON structure expression. The child elements can be referred to using JavaScript-like square bracket index operators. For example, if the outermost element is an array, the first element of the array can be referred to by the expression json[0], the second element can be referred to by the expression json[1], and so on. Likewise, if the outermost JSON element is an object, with keys "name" and "address", then the values of these keys can be referred to by the expressions json["name"] and json["address"] respectively.
These index operators can be cascaded. For example, it the outermost JSON element is an object with a key and "address" whose value is an object containing keys "city" and "province", then these values can be referred to by the expressions json["address"]["city"] and json["address"]["province"].
In order to refer to all of the values in an array or object, a wildcard index * can be used. For example, if the outermost JSON element is an array, then the expression json[*] refers to every element in the array.
JSON Property Expressions
A property expression is a structure expression as described above, followed by a . (dot) operator and a property name. Currently, the only supported properties are type and size. The type property returns the type of the JSON value referred to by the JSON structure expression. For example, if the outermost JSON element is an array, and the first element of the array is a string, then the expression json[0].type would have a value of string. The size property, which can only be applied to an array, returns the number of elements in the array.
String Literal Expressions
A string literal expression is simply a quoted string value, such as "this is a string literal expression".
FME Licensing Level
FME Professional edition and above
Editing Transformer Parameters
Using a set of menu options, transformer parameters can be assigned by referencing other elements in the workspace. More advanced functions, such as an advanced editor and an arithmetic editor, are also available in some transformers. To access a menu of these options, click beside the applicable parameter. For more information, see Transformer Parameter Menu Options.
Transformer Categories
Search FME Knowledge Center
Search for samples and information about this transformer on the FME Knowledge Center.
Tags Keywords: JSONExploder