diff --git a/extra/naming_strategy.go b/extra/naming_strategy.go index 2390f65..bc4c43f 100644 --- a/extra/naming_strategy.go +++ b/extra/naming_strategy.go @@ -18,6 +18,9 @@ type namingStrategyExtension struct { func (extension *namingStrategyExtension) UpdateStructDescriptor(structDescriptor *jsoniter.StructDescriptor) { for _, binding := range structDescriptor.Fields { + if unicode.IsLower(rune(binding.Field.Name()[0])) { + continue + } tag, hastag := binding.Field.Tag().Lookup("json") if hastag { tagParts := strings.Split(tag, ",") diff --git a/extra/naming_strategy_test.go b/extra/naming_strategy_test.go index bee7803..29524bf 100644 --- a/extra/naming_strategy_test.go +++ b/extra/naming_strategy_test.go @@ -48,3 +48,17 @@ func Test_set_naming_strategy_with_omitempty(t *testing.T) { should.Nil(err) should.Equal(`{"user_name":"taowen"}`, string(output)) } + +func Test_set_naming_strategy_with_private_field(t *testing.T) { + should := require.New(t) + SetNamingStrategy(LowerCaseWithUnderscores) + output, err := jsoniter.Marshal(struct { + UserName string + userId int + }{ + UserName: "allen", + userId: 100, + }) + should.Nil(err) + should.Equal(`{"user_name":"allen"}`, string(output)) +}