Class DS.JSONSerializer
Ember Data 2.0 Serializer:
In Ember Data 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 Ember Data recommends using the JSONApiSerializer.
JSONSerializer
is useful for simpler or legacy backends that may
not support the http://jsonapi.org/ spec.
JSONSerializer
normalizes a JSON payload that looks like:
App.User = DS.Model.extend({
name: DS.attr(),
friends: DS.hasMany('user'),
house: DS.belongsTo('location'),
});
{
id: 1,
name: 'Sebastian',
friends: [3, 4],
links: {
house: '/houses/lefkada'
}
}
to JSONApi format that the Ember Data store expects.
You can customize how JSONSerializer processes it's 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 normalize
hook
-To customize how JSONSerializer normalizes the whole server response, use the
normalizeResponse hook
-To customize how JSONSerializer normalizes a specific response from the server,
use one of the many specific normalizeResponse hooks
-To customize how JSONSerializer normalizes your id, attributes or relationships,
use the extractId, extractAttributes and extractRelationships hooks.
JSONSerializer normalization process follows these steps:
normalizeResponse
- entry method to the SerializernormalizeCreateRecordResponse
- a normalizeResponse for a specific operation is callednormalizeSingleResponse
|normalizeArrayResponse
- for methods likecreateRecord
we expect a single record back, while for methods likefindAll
we expect multiple methods backnormalize
- normalizeArray iterates and calls normalize for each of it's records while normalizeSingle calls it once. This is the method you most likely want to subclassextractId
|extractAttributes
|extractRelationships
- normalize delegates to these methods to turn the record payload into the JSONApi format
Methods
- extract
- extractArray
- extractAttributes
- extractCreateRecord
- extractDeleteRecord
- extractErrors
- extractFind
- extractFindAll
- extractFindBelongsTo
- extractFindHasMany
- extractFindMany
- extractFindQuery
- extractId
- extractMeta
- extractQueryRecord
- extractRelationship
- extractRelationships
- extractSave
- extractSingle
- extractUpdateRecord
- keyForAttribute
- keyForLink
- keyForRelationship
- modelNameFromPayloadKey
- normalize
- normalizeArrayResponse
- normalizeCreateRecordResponse
- normalizeDeleteRecordResponse
- normalizeFindAllResponse
- normalizeFindBelongsToResponse
- normalizeFindHasManyResponse
- normalizeFindManyResponse
- normalizeFindRecordResponse
- normalizeQueryRecordResponse
- normalizeQueryResponse
- normalizeResponse
- normalizeSaveResponse
- normalizeSingleResponse
- normalizeUpdateRecordResponse
- serialize
- serializeAttribute
- serializeBelongsTo
- serializeHasMany
- serializeIntoHash
- serializePolymorphicType
Properties
Events
No documented items