How to parse an inner field in a nested JSON object

go, json

Solution

Unfortunately, unlike `encoding/xml`, the `json` package doesn't provide a way to access nested values. You'll want to either create a separate Parents struct or assign the type to be `map[string]string`. For example:

type Person struct {
    Name string
    Parents map[string]string
}

You could then provide a getter for mother as so:

func (p *Person) Mother() string {
    return p.Parents["mother"]
}

This may or may not play into your current codebase and if refactoring the `Mother` field to a method call is not on the menu, then you may want to create a separate method for decoding and conforming to your current struct.

Problem

I have a JSON object similar to this one: ``` { "name": "Cain", "parents": { "mother" : "Eve", "father" : "Adam" } } ``` Now I want to parse "name" and "mother" into this struct: ``` struct { Name String Mother String `json:"???"` } ``` I want to specify the JSON field name with the `json:...` struct tag, however I don't know what to use as tag, because it is not the top object I am interested in. I found nothing about this in the `encoding/json` package docs nor in the popular blog post JSON and Go. I also tested `mother`, `parents/mother` and `parents.mother`.

Original source