FYI - "go vet" will catch this. Running "go vet" is always a good idea.
On Tuesday, January 28, 2020 at 9:00:05 AM UTC-5, Lutz Horn wrote: > > Remove the blank in ``json: "baz.bar"` and make it `json:"baz.bar"`. This > works: https://play.golang.com/p/i9SURYgGO66 > > ________________________________________ > Von: golan...@googlegroups.com <javascript:> <golan...@googlegroups.com > <javascript:>> im Auftrag von ma...@markhansen.co.nz <javascript:> < > ma...@markhansen.co.nz <javascript:>> > Gesendet: Dienstag, 28. Januar 2020 12:14 > An: golang-nuts > Betreff: [go-nuts] JSON: Having trouble parsing map keys with dots like > {"foo.bar":"baz"} > > Hi folks, for background, I'm trying to read the Kaiterra API< > https://www.kaiterra.com/dev/#overview> using encoding/json, which has > JSON values like this: > > {"id":"00000000-0001-0001-0000-00007e57c0de","info.aqi":{"ts":"2018-03-26T08:53:20Z","data":{"pm10":120,"pm25":214}}} > > > > I'm having trouble parsing the "info.aqi" field using encoding/json. I set > the "info.aqi" field as a struct tag `json: "info.aqi"`, but the struct is > just empty after parsing. > > It seems more likely I'm holding it wrong, but I'm wondering if perhaps > this is a bug in Go's JSON parsing? > > I thought I'd make a minimal repro test, which fails: > > package main > > import ( > "encoding/json" > "strings" > "testing" > ) > > type Foo struct { > BazBar string `json: "baz.bar"` > Qux string `json: "qux"` > } > > func TestDotKeyJsonParsing(t *testing.T) { > f := &Foo{} > d := json.NewDecoder(strings.NewReader(`{"baz.bar": "hello", "qux": > "hi"}`)) > err := d.Decode(f) > if err != nil { > t.Fatalf("json decoding failed: %v", err) > } > if f.Qux != "hi" { > t.Fatalf("Expected f.Qux to be hi") > } > > if f.BazBar != "hello" { > t.Errorf("wanted: hello, got: %q", f.BazBar) > } > } > > And the Qux field passes fine, but the BazBar field is not set, so the > test fails there: > --- FAIL: TestDotKeyJsonParsing (0.00s) > /Users/mark/projects/godot/dot_test.go:26: wanted: hello, got: "" > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golan...@googlegroups.com <javascript:><mailto: > golang-nuts+unsubscr...@googlegroups.com <javascript:>>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/539f857c-d96a-45af-9a74-c328753bd12d%40googlegroups.com > < > https://groups.google.com/d/msgid/golang-nuts/539f857c-d96a-45af-9a74-c328753bd12d%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/03ebed61-a185-4509-b52d-f3b8e8934153%40googlegroups.com.