forked from Mirrors/jsonapi
* Added README to explain how to support custom types (#149) * Fix incorrect docstring
This commit is contained in:
parent
5d047c6bc6
commit
3b9f84a311
31
README.md
31
README.md
|
@ -343,6 +343,37 @@ func (post Post) JSONAPIRelationshipMeta(relation string) *Meta {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Custom types
|
||||||
|
|
||||||
|
If you need to support custom types (e.g. for custom time formats), you'll need to implement the json.Marshaler and json.Unmarshaler interfaces on the type.
|
||||||
|
|
||||||
|
```go
|
||||||
|
// MyTimeFormat is a custom format I invented for fun
|
||||||
|
const MyTimeFormat = "The time is 15:04:05. The year is 2006, and it is day 2 of January."
|
||||||
|
|
||||||
|
// MyTime is a custom type used to handle the custom time format
|
||||||
|
type MyTime struct {
|
||||||
|
time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON to implement the json.Unmarshaler interface
|
||||||
|
func (m *MyTime) UnmarshalJSON(b []byte) error {
|
||||||
|
t, err := time.Parse(MyTimeFormat, string(b))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m.Time = t
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalJSON to implement the json.Marshaler interface
|
||||||
|
func (m *MyTime) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(m.Time.Format(MyTimeFormat))
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Errors
|
### Errors
|
||||||
This package also implements support for JSON API compatible `errors` payloads using the following types.
|
This package also implements support for JSON API compatible `errors` payloads using the following types.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue