diff --git a/gen/decoder.go b/gen/decoder.go index 9438568..2de39cb 100644 --- a/gen/decoder.go +++ b/gen/decoder.go @@ -156,7 +156,7 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" for !in.IsDelim(']') {") fmt.Fprintln(g.out, ws+" var "+tmpVar+" "+g.getType(elem)) - if err := g.genTypeDecoder(elem, tmpVar, tags, indent+2); err != nil { + if err := g.genTypeDecoder(elem, tmpVar, fieldTags{}, indent+2); err != nil { return err } @@ -190,7 +190,7 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" for !in.IsDelim(']') {") fmt.Fprintln(g.out, ws+" if "+iterVar+" < "+fmt.Sprint(length)+" {") - if err := g.genTypeDecoder(elem, "("+out+")["+iterVar+"]", tags, indent+3); err != nil { + if err := g.genTypeDecoder(elem, "("+out+")["+iterVar+"]", fieldTags{}, indent+3); err != nil { return err } @@ -224,7 +224,7 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" "+out+" = new("+g.getType(t.Elem())+")") fmt.Fprintln(g.out, ws+" }") - if err := g.genTypeDecoder(t.Elem(), "*"+out, tags, indent+1); err != nil { + if err := g.genTypeDecoder(t.Elem(), "*"+out, fieldTags{}, indent+1); err != nil { return err } @@ -265,7 +265,7 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" key := "+g.getType(key)+"("+keyDec+")") } else { fmt.Fprintln(g.out, ws+" var key "+g.getType(key)) - if err := g.genTypeDecoder(key, "key", tags, indent+2); err != nil { + if err := g.genTypeDecoder(key, "key", fieldTags{}, indent+2); err != nil { return err } } @@ -273,7 +273,7 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" in.WantColon()") fmt.Fprintln(g.out, ws+" var "+tmpVar+" "+g.getType(elem)) - if err := g.genTypeDecoder(elem, tmpVar, tags, indent+2); err != nil { + if err := g.genTypeDecoder(elem, tmpVar, fieldTags{}, indent+2); err != nil { return err } diff --git a/tests/basic_test.go b/tests/basic_test.go index 938add0..bbde968 100644 --- a/tests/basic_test.go +++ b/tests/basic_test.go @@ -35,6 +35,7 @@ var testCases = []struct { {&arrayValue, arrayString}, {&mapsValue, mapsString}, {&deepNestValue, deepNestString}, + {&deepNestOptionalValue, deepNestOptionalString}, {&IntsValue, IntsString}, {&mapStringStringValue, mapStringStringString}, {&namedTypeValue, namedTypeValueString}, diff --git a/tests/data.go b/tests/data.go index 5e6c610..e5a680c 100644 --- a/tests/data.go +++ b/tests/data.go @@ -659,6 +659,20 @@ var deepNestString = `{` + `"NamedStringSlice":["value4","value5"]` + `}` +type DeepNestOptional struct { + MapSlice []map[Str]Str `json:",omitempty"` +} + +var deepNestOptionalValue = DeepNestOptional{ + MapSlice: []map[Str]Str{map[Str]Str{}}, +} + +var deepNestOptionalString = `{` + + `"MapSlice":[` + + `{}` + + `]` + + `}` + //easyjson:json type Ints []int