Documentation
¶
Index ¶
Examples ¶
Constants ¶
View Source
const ErrNotInterfaceType errorkit.Error = "jsonkit.ErrNotInterfaceType"
Variables ¶
This section is empty.
Functions ¶
func NewArrayStreamDecoder ¶ added in v0.310.0
func NewArrayStreamDecoder(r io.Reader) codec.StreamDecoder
Types ¶
type Array ¶
type Array[T any] []T
Example ¶
package main
import (
"encoding/json"
"go.llib.dev/frameless/pkg/jsonkit"
)
func main() {
var greeters = jsonkit.Array[Greeter]{
TypeA{V: "42"},
TypeB{V: 42},
}
data, err := json.Marshal(greeters)
if err != nil {
panic(err)
}
var result jsonkit.Array[Greeter]
if err := json.Unmarshal(data, &result); err != nil {
panic(err)
}
// "result" will contain the same as the "greeters".
}
type Greeter interface{ Hello() }
type TypeA struct{ V string }
func (TypeA) Hello() {}
type TypeB struct{ V int }
func (TypeB) Hello() {}
Output:
func (Array[T]) MarshalJSON ¶
func (*Array[T]) UnmarshalJSON ¶
type ArrayEncoder ¶ added in v0.310.0
func NewArrayStreamEncoder ¶ added in v0.310.0
func NewArrayStreamEncoder[T any](w io.Writer) *ArrayEncoder[T]
func (*ArrayEncoder[T]) Close ¶ added in v0.310.0
func (c *ArrayEncoder[T]) Close() error
func (*ArrayEncoder[T]) Encode ¶ added in v0.310.0
func (c *ArrayEncoder[T]) Encode(v T) error
type Codec ¶
type Codec struct{}
func (Codec) NewStreamDecoder ¶ added in v0.310.0
func (Codec) NewStreamDecoder(r io.Reader) codec.StreamDecoder
func (Codec) NewStreamEncoder ¶ added in v0.310.0
func (Codec) NewStreamEncoder(w io.Writer) codec.StreamEncoder
type Interface ¶
type Interface[I any] struct{ V I }
Example ¶
package main
import (
"encoding/json"
"go.llib.dev/frameless/pkg/jsonkit"
)
func main() {
var exp = jsonkit.Interface[Greeter]{
V: &TypeC{V: 42.24},
}
data, err := json.Marshal(exp)
if err != nil {
panic(err)
}
// {"__type":"type_c","v":42.24}
var got jsonkit.Interface[Greeter]
if err := json.Unmarshal(data, &got); err != nil {
panic(err)
}
// got == exp
// got.V -> *TypeC{V: 42.24}
}
type Greeter interface{ Hello() }
type TypeC struct{ V float32 }
func (*TypeC) Hello() {}
Output:
func (Interface[I]) MarshalJSON ¶
func (*Interface[I]) UnmarshalJSON ¶
type LinesCodec ¶
type LinesCodec struct {
// UseNumber causes the Decoder to unmarshal a number into an
// interface value as a [Number] instead of as a float64.
UseNumber bool
DisallowUnknownFields bool
}
func (LinesCodec) NewStreamDecoder ¶ added in v0.310.0
func (c LinesCodec) NewStreamDecoder(r io.Reader) codec.StreamDecoder
func (LinesCodec) NewStreamEncoder ¶ added in v0.310.0
func (LinesCodec) NewStreamEncoder(w io.Writer) codec.StreamEncoder
Click to show internal directories.
Click to hide internal directories.