format.json.encode

JSON Encoding ViewHelper

Returns a string containing the JSON representation of the argument. The argument may be any of the following types:

  • arrays, associative and traditional

  • DomainObjects

  • arrays containing DomainObjects

  • ObjectStorage containing DomainObjects

  • standard types (string, integer, boolean, float, NULL)

  • DateTime including ones found as property values on DomainObjects

Recursion protection is enabled for DomainObjects with the option to add a special marker (any variable type above also supported here) which is inserted where an object which would cause recursion would be placed.

Be specially careful when you JSON encode DomainObjects which have recursive relations to itself using either 1:n or m:n - in this case the one member of the converted relation will be whichever value you specified as "recursionMarker" - or the default value, NULL. When using the output of such conversion in JavaScript please make sure you check the type before assuming that every member of a converted 1:n or m:n recursive relation is in fact a JavaScript. Not doing so may result in fatal JavaScript errors in the client browser.

Arguments

value

DataType

mixed

Required

false

Description

Value to encode as JSON

useTraversableKeys

DataType

boolean

Required

false

Description

If TRUE, preserves keys from Traversables converted to arrays. Not recommended for ObjectStorages!

preventRecursion

DataType

boolean

Default

true

Required

false

Description

If FALSE, allows recursion to occur which could potentially be fatal to the output unless managed

recursionMarker

DataType

mixed

Required

false

Description

String or null - inserted instead of recursive instances of objects

dateTimeFormat

DataType

string

Required

false

Description

A date() format for DateTime values to JSON-compatible values. NULL means JS UNIXTIME (time()*1000)

pretty

DataType

mixed

Required

false

Description

If TRUE, outputs JSON with JSON_PRETTY_PRINT