| package extra |
| |
| import ( |
| "github.com/json-iterator/go" |
| "unicode" |
| ) |
| |
| // SupportPrivateFields include private fields when encoding/decoding |
| func SupportPrivateFields() { |
| jsoniter.RegisterExtension(&privateFieldsExtension{}) |
| } |
| |
| type privateFieldsExtension struct { |
| jsoniter.DummyExtension |
| } |
| |
| func (extension *privateFieldsExtension) UpdateStructDescriptor(structDescriptor *jsoniter.StructDescriptor) { |
| for _, binding := range structDescriptor.Fields { |
| isPrivate := unicode.IsLower(rune(binding.Field.Name[0])) |
| if isPrivate { |
| binding.FromNames = []string{binding.Field.Name} |
| binding.ToNames = []string{binding.Field.Name} |
| } |
| } |
| } |