forked from mirror/pkger
67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
package mem
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/markbates/pkger/pkging"
|
|
)
|
|
|
|
func (f File) MarshalJSON() ([]byte, error) {
|
|
m := map[string]interface{}{
|
|
"info": f.info,
|
|
"her": f.her,
|
|
"path": f.path,
|
|
"data": f.data,
|
|
"parent": f.parent,
|
|
}
|
|
return json.Marshal(m)
|
|
}
|
|
|
|
func (f *File) UnmarshalJSON(b []byte) error {
|
|
m := map[string]json.RawMessage{}
|
|
if err := json.Unmarshal(b, &m); err != nil {
|
|
return err
|
|
}
|
|
|
|
info, ok := m["info"]
|
|
if !ok {
|
|
return fmt.Errorf("missing info")
|
|
}
|
|
|
|
f.info = &pkging.FileInfo{}
|
|
if err := json.Unmarshal(info, f.info); err != nil {
|
|
return err
|
|
}
|
|
|
|
her, ok := m["her"]
|
|
if !ok {
|
|
return fmt.Errorf("missing her")
|
|
}
|
|
if err := json.Unmarshal(her, &f.her); err != nil {
|
|
return err
|
|
}
|
|
|
|
path, ok := m["path"]
|
|
if !ok {
|
|
return fmt.Errorf("missing path")
|
|
}
|
|
if err := json.Unmarshal(path, &f.path); err != nil {
|
|
return err
|
|
}
|
|
|
|
parent, ok := m["parent"]
|
|
if !ok {
|
|
return fmt.Errorf("missing parent")
|
|
}
|
|
if err := json.Unmarshal(parent, &f.parent); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := json.Unmarshal(m["data"], &f.data); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|