Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Macro: Escaping Invalid Characters

If you are working with JSON, return messages can contain characters that are not recognised in PhixFlowoutputting stream data into JSON format, the data can include special characters that JSON will not accept. The following macro escapes these invalid characters

For example: \b is standard notation for the backspace character. However, \ is also a special character in JSON, so we need to escape this with \\\\ to tell it that the \ should not be treated as a special character in this instance


Code Block
do(
    $value = $args[1],
    $value = replaceAll( $value , "\b","\\\\b"),
    $value = replaceAll( $value , "\f","\\\\f"),
    $value = replaceAll( $value , "\t","\\\\t"),
    $value = replaceAll( $value , "\r","\\\\r"),
    $value = replaceAll( $value , "\n","\\\\n"),
    $value = replaceAll( $value , "\\\\","\\\\\\\\"),
    $value = replaceAll( $value , '"','\\\\"')
)

Validating JSON Files

JSON code can include characters that cannot be written to a database that is using the UTF-8 character set. For example, 4-bit Emojis are not supported by UTF-8.

The following regular expression lists the characters expected in a JSON file and removes invalid characters from it.

Code Block
replaceAll(JSON Code,"[^\\p{Space}0-9A-Za-z!:\\\"%&\\[*()\\],-/_\\\\{}\\.]","")

The backslash character escapes special characters such as [] , . and \ 

Tip

The UTF-8mb4 character set supports a wider range of characters, such as Emojis. Migrating your database to use this character set would allow JSON to be used without needing to validate it using a regular expression.

See also: Regular Expressions


...