diff --git a/internal/lang/data_class_test.go b/internal/lang/data_class_test.go index 84f6242..57a9e0c 100644 --- a/internal/lang/data_class_test.go +++ b/internal/lang/data_class_test.go @@ -30,7 +30,7 @@ func TestGenerateGoDataClassJSONNamingOverride(t *testing.T) { package demo @jsonNaming(camelCase) -data class Account(var availableBalance: Double) +data class Account(var availableBalance: Double, var Type: String) `) if err != nil { t.Fatalf("parse failed: %v", err) @@ -39,8 +39,10 @@ data class Account(var availableBalance: Double) if err != nil { t.Fatalf("generation failed: %v", err) } - if !strings.Contains(string(out), "`json:\"availableBalance\"`") { - t.Fatalf("generated Go missing camelCase tag:\n%s", out) + for _, want := range []string{"`json:\"availableBalance\"`", "`json:\"type\"`"} { + if !strings.Contains(string(out), want) { + t.Fatalf("generated Go missing camelCase tag %q:\n%s", want, out) + } } } diff --git a/internal/lang/generate_go.go b/internal/lang/generate_go.go index c11b976..bc59dfc 100644 --- a/internal/lang/generate_go.go +++ b/internal/lang/generate_go.go @@ -1960,7 +1960,10 @@ func jsonFieldName(name, policy string) string { case "", "snakeCase": return snakeCase(name) case "camelCase": - return name + if name == "" { + return name + } + return strings.ToLower(name[:1]) + name[1:] case "pascalCase": return exportedGoName(name) case "kebabCase":