Documentation / @ember-data/serializer / json / default
Class: default
Defined in: warp-drive-packages/legacy/declarations/serializer/json.d.ts:74
DANGER
⚠️ This is LEGACY documentation for a feature that is no longer encouraged to be used. If starting a new app or thinking of implementing a new adapter, consider writing a Handler instead to be used with the RequestManager
In WarpDrive a Serializer is used to serialize and deserialize records when they are transferred in and out of an external source. This process involves normalizing property names, transforming attribute values and serializing relationships.
By default, WarpDrive uses and recommends the JSONAPISerializer.
JSONSerializer is useful for simpler or legacy backends that may not support the http://jsonapi.org/ spec.
For example, given the following User model and JSON payload:
import Model, { attr, belongsTo, hasMany } from '@warp-drive/legacy/model';
export default class UserModel extends Model {
@hasMany('user') friends;
@belongsTo('location') house;
@attr('string') name;
}{
id: 1,
name: 'Sebastian',
friends: [3, 4],
links: {
house: '/houses/lefkada'
}
}JSONSerializer will normalize the JSON payload to the {json:api} format that the JSONAPICache uses to cache data in the Store.
You can customize how JSONSerializer processes its payload by passing options in the attrs hash or by subclassing the JSONSerializer and overriding hooks:
- To customize how a single record is normalized, use the
normalizehook. - To customize how
JSONSerializernormalizes the whole server response, use thenormalizeResponsehook. - To customize how
JSONSerializernormalizes a specific response from the server, use one of the many specificnormalizeResponsehooks. - To customize how
JSONSerializernormalizes your id, attributes or relationships, use theextractId,extractAttributesandextractRelationshipshooks.
The JSONSerializer normalization process follows these steps:
normalizeResponse
- entry method to the serializer.
normalizeCreateRecordResponse
- a
normalizeResponsefor a specific operation is called.
normalizeSingleResponse|normalizeArrayResponse
- for methods like
createRecordwe expect a single record back, while for methods likefindAllwe expect multiple records back.
normalize
normalizeArrayResponseiterates and callsnormalizefor each of its records whilenormalizeSinglecalls it once. This is the method you most likely want to subclass.
extractId|extractAttributes|extractRelationships
normalizedelegates to these methods to turn the record payload into the JSON API format.
JSONSerializer