تخطَّ إلى المحتوى

مُرمّز JSON مخصص في وقت التشغيل

يدعم Gin منطق تسلسل وإلغاء تسلسل JSON مخصص بدون استخدام علامات الترجمة.

  1. حدد هيكلاً مخصصاً ينفّذ واجهة json.Core.
  2. قبل بدء المحرك، عيّن القيم إلى json.API باستخدام الهيكل المخصص.
package main
import (
"io"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/codec/json"
jsoniter "github.com/json-iterator/go"
)
var customConfig = jsoniter.Config{
EscapeHTML: true,
SortMapKeys: true,
ValidateJsonRawMessage: true,
}.Froze()
type customJsonApi struct{}
func (j customJsonApi) Marshal(v any) ([]byte, error) {
return customConfig.Marshal(v)
}
func (j customJsonApi) Unmarshal(data []byte, v any) error {
return customConfig.Unmarshal(data, v)
}
func (j customJsonApi) MarshalIndent(v any, prefix, indent string) ([]byte, error) {
return customConfig.MarshalIndent(v, prefix, indent)
}
func (j customJsonApi) NewEncoder(writer io.Writer) json.Encoder {
return customConfig.NewEncoder(writer)
}
func (j customJsonApi) NewDecoder(reader io.Reader) json.Decoder {
return customConfig.NewDecoder(reader)
}
func main() {
// Replace the default json api
json.API = customJsonApi{}
// Start your gin engine
router := gin.Default()
router.Run(":8080")
}