#

API Docs for: v3.16.0-alpha.2
Show: Inherited Protected Private Deprecated

# Transform Class

Defined in: `../serializer/addon/-private/transforms/transform.js:7`
Module: @ember-data/serializer

The `Transform` class is used to serialize and deserialize model attributes when they are saved or loaded from an adapter. Subclassing `Transform` is useful for creating custom attributes. All subclasses of `Transform` must implement a `serialize` and a `deserialize` method.

Example

    import Transform from '@ember-data/serializer/transform';

    // Converts centigrade in the JSON to fahrenheit in the app
    export default Transform.extend({
      deserialize(serialized, options) {
        return (serialized *  1.8) + 32;
      },

      serialize(deserialized, options) {
        return (deserialized - 32) / 1.8;
      }
    });

Usage

    import Model, { attr } from '@ember-data/model';

    export default Model.extend({
      name: attr('string'),
      temperature: attr('temperature')
    });

The options passed into the `attr` function when the attribute is declared on the model is also available in the transform.

    import Model, { attr } from '@ember-data/model';

    export default Model.extend({
      title: attr('string'),
      markdown: attr('markdown', {
        markdown: {
          gfm: false,
          sanitize: true
        }
      })
    });

    import Transform from '@ember-data/serializer/transform';

    export default Transform.extend({
      serialize(deserialized, options) {
        return deserialized.raw;
      },

      deserialize(serialized, options) {
        var markdownOptions = options.markdown || {};

        return marked(serialized, markdownOptions);
      }
    });

- Index
- Methods

## Item Index

### Methods

- deserialize
- serialize

## Methods

### `deserialize`

(

- `serialized`
- `options`

)

Defined in `../serializer/addon/-private/transforms/transform.js:99`

When given a serialized value from a JSON object this method must return the deserialized value for the record attribute.

Example

    deserialize(serialized, options) {
      return empty(serialized) ? null : Number(serialized);
    }

#### Parameters:

- `serialized` Object

  The serialized value

- `options` Object

  hash of options passed to `attr`

#### Returns:

The deserialized value

### `serialize`

(

- `deserialized`
- `options`

)

Defined in `../serializer/addon/-private/transforms/transform.js:78`

When given a deserialized value from a record attribute this method must return the serialized value.

Example

    import { isEmpty } from '@ember/utils';

    serialize(deserialized, options) {
      return isEmpty(deserialized) ? null : Number(deserialized);
    }

#### Parameters:

- `deserialized` Object

  The deserialized value

- `options` Object

  hash of options passed to `attr`

#### Returns:

The serialized value