Spec-Zone.ru › ColdFusion

serializeJSON

Преобразует значение ColdFusion в строку JSON (JavaScript Object Notation).

serializeJSON(data[, queryFormat[, useSecureJSONPrefix[, useCustomSerializer]]]) → returns string

Синтаксис функции-члена

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

  • CF8+
  • Lucee
  • BL 1.0.0+
  • См. также: deserializeJSON structSetMetadata arraySetMetadata

    Описание аргументов

    data any
    Обязательный

    Сериализуемое значение данных ColdFusion

    queryFormat any
    По умолчанию: row

    Определяет, как сериализовать запросы ColdFusion. До версии CF 11+ принимались только логические значения. Если указано логическое значение, false эквивалентно 'row', а true — 'column'.
    Значения:
    • row
    • column
    • struct
    • false
    • true

    useSecureJSONPrefix boolean
    По умолчанию: false

    CF 11+ Если в ColdFusion Administrator включена настройка Prefix Serialized JSON, эта функция по умолчанию добавляет безопасный префикс JSON в начало JSON-строки.

    useCustomSerializer boolean
    По умолчанию: true

    CF 11+ Использовать пользовательский сериализатор, если он определен. См.: https://helpx.adobe.com/coldfusion/developing-applications/changes-in-coldfusion/restful-web-services-in-coldfusion.html

    Совместимость

    ColdFusion:

    Версия 8+ В CF11+ добавлены аргументы useSecureJSONPrefix и useCustomSerializer. queryFormat (ранее известный как serializeQueryByColumns) теперь принимает не только логические значения, но и строки; также добавлена функциональность 'struct'. Значение по умолчанию для queryFormat можно задать с помощью новой настройки Application.cfc this.serialization.serializeQueryAs. Также добавлены настройки Application.cfc this.serialization.preserveCaseForStructKey и this.serialization.preserveCaseForQueryColumn. В CF2016+ добавлен синтаксис функции-члена.

    Lucee:

    Синтаксис функции-члена добавлен в Lucee 5.3.8+

    BoxLang:

    Версия 1.0.0+ В 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"}

    Возможные проблемы в ACF

    Adobe ColdFusion может некорректно сериализовать некоторые строки, если их можно автоматически преобразовать в другие типы, например числа или логические значения. Один из способов решения — использовать CFC с cfproperty для указания типов. Другой способ — добавить chr(2) в начало значения, чтобы оно принудительно интерпретировалось как строка, однако это неофициальный и недокументированный обходной путь.

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

    Ожидаемый результат: {"phone":123456789,"firstname":false,"lastname":true}

    Принудительное указание типов с помощью setMetadata

    Начиная с 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

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API