我有一个与此对象相似的JSON对象:

{
  "name": "Cain",
  "parents": {
    "mother" : "Eve",
    "father" : "Adam"
  }
}

现在,我想将“name”和“mother”解析为该结构:
struct {
  Name String
  Mother String `json:"???"`
}

我想使用json:... struct标签指定JSON字段名称,但是我不知道该用什么作为标签,因为它不是我感兴趣的顶级对象。在 encoding/json 软件包文档中也未找到关于此的任何内容。热门博客文章JSON and Go。我还测试了motherparents/motherparents.mother

最佳答案

不幸的是,与encoding/xml不同,json包没有提供访问嵌套值的方法。您将要创建一个单独的Parents结构,或者将类型分配为map[string]string。例如:

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

然后,您可以为母亲提供 setter/getter :
func (p *Person) Mother() string {
    return p.Parents["mother"]
}

这可能会或可能不会影响您当前的代码库,并且如果菜单上未包含将Mother字段重构为方法调用的信息,那么您可能希望创建一个单独的方法来解码并符合当前结构。

10-06 13:16