@@ -24,6 +24,8 @@ type ID struct {
24
24
Number int64
25
25
}
26
26
27
+ // String implements fmt.Stringer.
28
+ //
27
29
// String returns a string representation of the ID.
28
30
// The representation is non ambiguous, string forms are quoted, number forms
29
31
// are preceded by a #.
@@ -38,7 +40,7 @@ func (id *ID) String() string {
38
40
return "#" + strconv .FormatInt (id .Number , 10 )
39
41
}
40
42
41
- // MarshalJSON implements json.MarshalJSON .
43
+ // MarshalJSON implements json.Marshaler .
42
44
func (id * ID ) MarshalJSON () ([]byte , error ) {
43
45
if id .Name != "" {
44
46
return json .Marshal (id .Name )
@@ -47,7 +49,7 @@ func (id *ID) MarshalJSON() ([]byte, error) {
47
49
return json .Marshal (id .Number )
48
50
}
49
51
50
- // UnmarshalJSON implements json.UnmarshalJSON .
52
+ // UnmarshalJSON implements json.Unmarshaler .
51
53
func (id * ID ) UnmarshalJSON (data []byte ) error {
52
54
* id = ID {}
53
55
if err := json .Unmarshal (data , & id .Number ); err == nil {
@@ -57,6 +59,9 @@ func (id *ID) UnmarshalJSON(data []byte) error {
57
59
return json .Unmarshal (data , & id .Name )
58
60
}
59
61
62
+ var _ json.Marshaler = (* ID )(nil )
63
+ var _ json.Unmarshaler = (* ID )(nil )
64
+
60
65
// RawMessage mimic json.RawMessage
61
66
// RawMessage is a raw encoded JSON value.
62
67
// It implements Marshaler and Unmarshaler and can
0 commit comments