serializeJSON

Converts a ColdFusion variable into a JSON (JavaScript Object Notation) string.

serializeJSON(var[, serializeQueryByColumns[, useSecureJSONPrefix[, useCustomSerializer]]]) → returns string

Member Function Syntax

someVar.toJSON([serializeQueryByColumns[, useSecureJSONPrefix[, useCustomSerializer]]])

Argument Reference

var variableName
Required

A ColdFusion variable.

serializeQueryByColumns boolean
Default: false

A Boolean value that specifies how to serialize ColdFusion queries.

useSecureJSONPrefix boolean
Default: false

CF 11+ When Prefix Serialized JSON is enabled in the ColdFusion Administrator, then by default this function inserts the secure JSON prefix at the beginning of the JSON.

useCustomSerializer boolean
Default: true

Compatibility

ColdFusion:

Version 8+ CF11+ Added Application.cfc setting this.serialization.preserveCaseForStructKey which defaults to true, also added useCustomSerializer argument. Member syntax added for CF2016+.

Lucee:

Member syntax added for Lucee5.3.8+

Links more information about serializeJSON

Examples
Sample code invoking the serializeJSON function

Serialize a CF Struct into a JSON representation

person = {name="Pete Freitag", company="Foundeo"};
writeOutput( serializeJSON(person) );

Expected Result: {"COMPANY":"Foundeo","NAME":"Pete Freitag"}

Serialize a CF Struct into a JSON representation using toJSON

person = {name="Pete Freitag", company="Foundeo"};
writeOutput( person.toJSON() );

Expected Result: {"COMPANY":"Foundeo","NAME":"Pete Freitag"}

Same as above but they variable names are case-sensitive by quoting them.

person = {"name"="Pete Freitag", "company"="Foundeo"};
writeOutput( serializeJSON(person) );

Expected Result: {"company":"Foundeo","name":"Pete Freitag"}

Adobe ColdFusion may incorrectly serializes some strings if they can be automatically converted into other types, like numbers or booleans. One workaround is to use a CFC with cfproperty to specify types. Another workaround is to prepend Chr(2) to the value and it will be forced to a string, however that is an unofficial / undocumented workaround.

person = { "phone"="123456789", "firstname"="no","lastname"="yes" };
writeOutput( serializeJson(person) );

Expected Result: {"phone":123456789,"firstname":false,"lastname":true}

As of CF 2016.0.2+ (update 2) you can call setMetadata() as a member function on a struct to force a type

myStruct = {"zip"="00123"};
myStruct.setMetadata( { "zip": "string" } );
writeOutput(serializeJSON(myStruct));

Expected Result: {"zip":"00123"}


Fork me on GitHub