privat_fields.go 572 B

123456789101112131415161718192021222324
  1. package extra
  2. import (
  3. "github.com/json-iterator/go"
  4. "unicode"
  5. )
  6. func SupportPrivateFields() {
  7. jsoniter.RegisterExtension(&privateFieldsExtension{})
  8. }
  9. type privateFieldsExtension struct {
  10. jsoniter.DummyExtension
  11. }
  12. func (extension *privateFieldsExtension) UpdateStructDescriptor(structDescriptor *jsoniter.StructDescriptor) {
  13. for _, binding := range structDescriptor.Fields {
  14. isPrivate := unicode.IsLower(rune(binding.Field.Name[0]))
  15. if isPrivate {
  16. binding.FromNames = []string{binding.Field.Name}
  17. binding.ToNames = []string{binding.Field.Name}
  18. }
  19. }
  20. }