Documentation ¶
Index ¶
- func Dejsonify(s string) string
- func Jsonify(s string) string
- func Marshal(data interface{}) (map[string]interface{}, error)
- func MarshalToJSON(val interface{}) ([]byte, error)
- func MarshalToJSONWithURLs(val interface{}, information ServerInformation) ([]byte, error)
- func MarshalWithURLs(data interface{}, information ServerInformation) (map[string]interface{}, error)
- func Pluralize(word string) string
- func Singularize(word string) string
- func Unmarshal(input map[string]interface{}, target interface{}) error
- func UnmarshalFromJSON(data []byte, target interface{}) error
- func UnmarshalInto(input map[string]interface{}, targetStructType reflect.Type, ...) error
- type MarshalIdentifier
- type MarshalIncludedRelations
- type MarshalLinkedRelations
- type MarshalReferences
- type Reference
- type ReferenceID
- type ServerInformation
- type UnmarshalIdentifier
- type UnmarshalLinkedRelations
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Marshal ¶
Marshal thats the input from `data` which can be a struct, a slice, or a pointer of it. Any struct in `data`or data itself, must at least implement the `MarshalIdentifier` interface. If so, it will generate a map[string]interface{} matching the jsonapi specification.
func MarshalToJSON ¶
MarshalToJSON marshals a struct to json it works like `Marshal` but returns json instead
func MarshalToJSONWithURLs ¶
func MarshalToJSONWithURLs(val interface{}, information ServerInformation) ([]byte, error)
MarshalToJSONWithURLs marshals a struct to json with URLs in `links`
func MarshalWithURLs ¶
func MarshalWithURLs(data interface{}, information ServerInformation) (map[string]interface{}, error)
MarshalWithURLs can be used to include the generation of `related` and `self` links
func Unmarshal ¶
Unmarshal reads a JSONAPI map to a model struct target must at least implement the `UnmarshalIdentifier` interface.
func UnmarshalFromJSON ¶
UnmarshalFromJSON reads a JSONAPI compatible JSON document to a model struct
Types ¶
type MarshalIdentifier ¶
type MarshalIdentifier interface {
GetID() string
}
MarshalIdentifier interface is necessary to give an element a unique ID. This interface must be implemented for marshal and unmarshal in order to let them store elements
type MarshalIncludedRelations ¶
type MarshalIncludedRelations interface { MarshalReferences MarshalIdentifier GetReferencedStructs() []MarshalIdentifier }
MarshalIncludedRelations must be implemented if referenced structs should be included
type MarshalLinkedRelations ¶
type MarshalLinkedRelations interface { MarshalReferences MarshalIdentifier GetReferencedIDs() []ReferenceID }
MarshalLinkedRelations must be implemented if there are references and the reference IDs should be included
type MarshalReferences ¶
type MarshalReferences interface {
GetReferences() []Reference
}
MarshalReferences must be implemented if the struct to be serialized has relations. This must be done because jsonapi needs information about relations even if many to many relations or many to one relations are empty
type ReferenceID ¶
ReferenceID contains all necessary information in order to reference another struct in jsonapi
type ServerInformation ¶
ServerInformation can be passed to MarshalWithURLs to generate the `self` and `related` urls inside `links`
type UnmarshalIdentifier ¶
UnmarshalIdentifier interface to set ID when unmarshalling
type UnmarshalLinkedRelations ¶
type UnmarshalLinkedRelations interface {
SetReferencedIDs([]ReferenceID) error
}
UnmarshalLinkedRelations same as MarshalLinkedRelations for unmarshaling