encoding/json: don't match field name if a JSON struct tag is present.

Fixes #3566.

R=rsc
CC=golang-dev
https://golang.org/cl/6139048
This commit is contained in:
David Symonds 2012-05-01 11:37:44 +10:00
parent dae2992c98
commit c3c8e35af2
2 changed files with 17 additions and 4 deletions

View file

@ -18,6 +18,10 @@ type T struct {
Z int `json:"-"`
}
type U struct {
Alphabet string `json:"alpha"`
}
type tx struct {
x int
}
@ -72,6 +76,10 @@ var unmarshalTests = []unmarshalTest{
// Z has a "-" tag.
{`{"Y": 1, "Z": 2}`, new(T), T{Y: 1}, nil},
{`{"alpha": "abc", "alphabet": "xyz"}`, new(U), U{Alphabet: "abc"}, nil},
{`{"alpha": "abc"}`, new(U), U{Alphabet: "abc"}, nil},
{`{"alphabet": "xyz"}`, new(U), U{}, nil},
// syntax errors
{`{"X": "foo", "Y"}`, nil, nil, &SyntaxError{"invalid character '}' after object key", 17}},
{`[1, 2, 3+]`, nil, nil, &SyntaxError{"invalid character '+' after array element", 9}},