package gnet

import (
	"encoding/json"
	"fmt"
)

type utilJson struct{}

func (u utilJson) MarshalString(v any) string {
	b, err := u.Marshal(v)
	if err != nil {
		return err.Error()
	}
	return string(b)
}

func (u utilJson) MarshalField(v any) ([]byte, error) {
	return []byte(fmt.Sprintf(`"%v"`, v)), nil
}

func (u utilJson) MarshalNoErr(v any) []byte {
	b, _ := u.Marshal(v)
	return b
}

func (u utilJson) Marshal(v any) ([]byte, error) {
	return json.Marshal(v)
}

var (
	Json utilJson
)
