serializeJSON
Преобразует значение ColdFusion в строку JSON (JavaScript Object Notation).
serializeJSON(data[, queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]]) → returns string
Синтаксис функции-члена
someVar.toJSON([queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]])
Описание аргументов
data any Обязательный
queryFormat any
По умолчанию: row
row
rowcolumnstructfalsetrue
useSecureJSONPrefix boolean
По умолчанию: false
false
useCustomSerializer boolean
По умолчанию: true
true
Совместимость
ColdFusion:
useSecureJSONPrefix и useCustomSerializer. queryFormat (ранее известный как serializeQueryByColumns) теперь принимает не только логические значения, но и строки; также добавлена функциональность 'struct'. Значение по умолчанию для queryFormat можно задать с помощью новой настройки Application.cfc this.serialization.serializeQueryAs. Также добавлены настройки Application.cfc this.serialization.preserveCaseForStructKey и this.serialization.preserveCaseForQueryColumn. В CF2016+ добавлен синтаксис функции-члена. Lucee:
BoxLang:
JSONSerialize. Ссылки дополнительная информация о serializeJSON
- Обзор JSON — обзор спецификации JSON.
- — CFC для сериализации и десериализации JSON. Он написан на CFML, поэтому работает в версиях до CF8. Может пригодиться, если у вас возникают проблемы с автоматическим преобразованием типов во встроенной функции serializeJSON.
Примеры Примеры вызова функции serializeJSON
Сериализация структуры CF в формате JSON
person = {name="Pete Freitag", company="Foundeo"};
writeOutput( serializeJSON(person) ); Ожидаемый результат: {"COMPANY":"Foundeo","NAME":"Pete Freitag"}
Сериализация структуры CF в формате JSON с помощью toJSON
person = {name="Pete Freitag", company="Foundeo"};
writeOutput( person.toJSON() ); Ожидаемый результат: {"COMPANY":"Foundeo","NAME":"Pete Freitag"}
Как и выше, но имена переменных чувствительны к регистру, поскольку заключены в кавычки.
person = {"name"="Pete Freitag", "company"="Foundeo"};
writeOutput( serializeJSON(person) ); Ожидаемый результат: {"company":"Foundeo","name":"Pete Freitag"}
Adobe ColdFusion может некорректно сериализовать некоторые строки, если их можно автоматически преобразовать в другие типы, например числа или логические значения. Один из способов решения — использовать CFC с cfproperty для указания типов. Другой способ — добавить chr(2) в начало значения, чтобы оно принудительно интерпретировалось как строка, однако это неофициальный и недокументированный обходной путь.
person = { "phone"="123456789", "firstname"="no","lastname"="yes" };
writeOutput( serializeJson(person) ); Ожидаемый результат: {"phone":123456789,"firstname":false,"lastname":true}
Начиная с CF 2016.0.2+, можно вызвать setMetadata() как функцию-член структуры, чтобы принудительно задать тип
myStruct = {"zip"="00123"};
myStruct.setMetadata( { "zip": "string" } );
writeOutput(serializeJSON(myStruct)); Ожидаемый результат: {"zip":"00123"}
Сериализация запроса CF в формате JSON в виде массива структур
news = queryNew("id,title",
"integer,varchar",
[ {"id":1,"title":"Dewey defeats Truman"}, {"id":2,"title":"Man walks on Moon"} ]);
writeOutput(serializeJSON(news, "struct")); Ожидаемый результат: [{"ID":1,"TITLE":"Dewey defeats Truman"},{"ID":2,"TITLE":"Man walks on Moon"}]
© 2012–present Foundeo, Inc. and the CFDocs contributors.
Licensed under the MIT License.
ColdFusion is a trademark of Adobe Systems Incorporated.
https://cfdocs.org/serializejson