mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-09-06 03:45:20 +02:00
35 lines
847 B
Go
35 lines
847 B
Go
|
package easyjson
|
||
|
|
||
|
import (
|
||
|
json "encoding/json"
|
||
|
|
||
|
jlexer "github.com/mailru/easyjson/jlexer"
|
||
|
"github.com/mailru/easyjson/jwriter"
|
||
|
)
|
||
|
|
||
|
// UnknownFieldsProxy implemets UnknownsUnmarshaler and UnknownsMarshaler
|
||
|
// use it as embedded field in your structure to parse and then serialize unknown struct fields
|
||
|
type UnknownFieldsProxy struct {
|
||
|
unknownFields map[string]interface{}
|
||
|
}
|
||
|
|
||
|
func (s *UnknownFieldsProxy) UnmarshalUnknown(in *jlexer.Lexer, key string) {
|
||
|
if s.unknownFields == nil {
|
||
|
s.unknownFields = make(map[string]interface{}, 1)
|
||
|
}
|
||
|
s.unknownFields[key] = in.Interface()
|
||
|
}
|
||
|
|
||
|
func (s UnknownFieldsProxy) MarshalUnknowns(out *jwriter.Writer, first bool) {
|
||
|
for key, val := range s.unknownFields {
|
||
|
if first {
|
||
|
first = false
|
||
|
} else {
|
||
|
out.RawByte(',')
|
||
|
}
|
||
|
out.String(string(key))
|
||
|
out.RawByte(':')
|
||
|
out.Raw(json.Marshal(val))
|
||
|
}
|
||
|
}
|