37 lines
620 B
Go
Executable File
37 lines
620 B
Go
Executable File
package storage
|
|
|
|
import (
|
|
"github.com/buger/jsonparser"
|
|
)
|
|
|
|
type Pair struct {
|
|
ID string `json:"id"`
|
|
Text string `json:"text"`
|
|
}
|
|
|
|
func New(id, text string) Pair {
|
|
return Pair{
|
|
Text: text,
|
|
ID: id,
|
|
}
|
|
}
|
|
|
|
func (p *Pair) UnmarshalJSON(b []byte) error {
|
|
var err error
|
|
if s, err := jsonparser.GetString(b); err == nil {
|
|
p.ID = s
|
|
return nil
|
|
}
|
|
if p.Text, err = jsonparser.GetString(b, "text"); err != nil {
|
|
return err
|
|
}
|
|
if p.ID, err = jsonparser.GetString(b, "id"); err != nil && err != jsonparser.KeyPathNotFoundError {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p Pair) Equals(o Pair) bool {
|
|
return p == o
|
|
}
|