Converts a ColdFusion value into a JSON (JavaScript Object Notation) string.
serializeJSON(data[, queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]])
→ returns string
someVar.toJSON([queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]])
row
row
column
struct
false
true
false
true
useSecureJSONPrefix
and useCustomSerializer
arguments. Changed queryFormat
(formerly known as serializeQueryByColumns
) from a boolean type to also allowing strings, adding the 'struct' functionality in the process. The default for queryFormat
can be set using the newly added Application.cfc setting this.serialization.serializeQueryAs
. Also added Application.cfc settings this.serialization.preserveCaseForStructKey
and this.serialization.preserveCaseForQueryColumn
. CF2016+ Added member syntax.
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+ 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"}
Serialize a CF Query into a JSON representation of an array of structs
news = queryNew("id,title",
"integer,varchar",
[ {"id":1,"title":"Dewey defeats Truman"}, {"id":2,"title":"Man walks on Moon"} ]);
writeOutput(serializeJSON(news, "struct"));
Expected Result: [{"ID":1,"TITLE":"Dewey defeats Truman"},{"ID":2,"TITLE":"Man walks on Moon"}]
Signup for cfbreak
to stay updated on the latest news from the ColdFusion / CFML community. One email, every friday.