dragonmeng2002 2012-11-27 21:36
浏览 873
已采纳

如何在Golang中解析嵌套JSON对象中的内部字段?

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.

  • 写回答

5条回答 默认 最新

  • douna2917 2012-11-27 22:41
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?