Converts a ColdFusion value into a JSON (JavaScript Object Notation) string.
serializeJSON(data[, queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]])
→ returns string
someVar.toJSON([queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]])
rowrowcolumnstructfalsetruefalsetrueuseSecureJSONPrefix 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.
JSONSerialize in BoxLang.
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.