Skip to main content

JSON_FROM

JSON_FROM:
arg: { arg } # required
undeterminedIf: # required
isEmpty: { message } # optional
isInvalid: { message } # required

Description​

The JSON_FROM operation parses a Bytes (string) value and converts it into a structured Json type. This operation is essential for handling semi-structured data, such as policy documents or configuration details, that are often stored as JSON strings within CMDB fields.

It is crucial to use a Bytes type as the input (arg) to ensure the string is parsed exactly as it is stored, preserving all characters, whitespace, and case, which is critical for a successful and reliable JSON conversion. Using the Text type can lead to parsing errors due to its normalization behavior.

Parameters​

  • arg (Operation<Bytes>, required):
    • Specifies the Bytes value containing the JSON string to be parsed. This should be an operation that resolves to a Bytes value.
    • A common pattern is to use a FIELD operation with returnType: BYTES or an EXTRACT that is configured to return a Bytes type.
  • undeterminedIf (object, required):
    • A mandatory block that defines conditions for gracefully handling parsing failures by returning an UNDETERMINED status.
    • isEmpty (string, optional): If provided, the operation will return an UNDETERMINED status with the specified message if the input arg is empty or null.
    • isInvalid (string, required): A mandatory check that returns an UNDETERMINED status with the specified message if the input arg string is not a valid JSON document. This ensures that malformed JSON is handled gracefully without causing policy errors.

Return Type​

Json

Example​

This example demonstrates parsing an AWS IAM policy document, which is stored as a JSON string in the CA10__policyDocument__c field.

# The JSON_FROM operation converts the string from the field into a queryable JSON object.
JSON_FROM:
# The 'arg' must resolve to a Bytes type. We use FIELD with 'returnType: BYTES' to ensure the exact string is used.
arg:
FIELD:
path: CA10__policyDocument__c
returnType: BYTES
# The 'undeterminedIf' block is required for robust error handling.
undeterminedIf:
# (Optional) Handle cases where the policy document field is empty.
isEmpty: "The policy document field is empty."
# (Required) Handle cases where the string is not valid JSON.
isInvalid: "The policy document is not a valid JSON document."