我们需要为嵌套在不需要自定义解组器的多个其他结构中的结构使用自定义解组器。我们有很多结构类似于B
下面定义的结构(类似于嵌套A
)。代码的输出是true false 0
(预期的true false 2
)。有任何想法吗?
在此处转到 Playground 示例。
package main
import (
"fmt"
"encoding/json"
)
type A struct {
X bool `json:"x"`
Y bool `json:"y"`
}
type B struct {
A
Z int `json:"z"`
}
func (a *A) UnmarshalJSON(bytes []byte) error {
var aa struct {
X string `json:"x"`
Y string `json:"y"`
}
json.Unmarshal(bytes, &aa)
a.X = aa.X == "123"
a.Y = aa.Y == "abc"
return nil
}
const myJSON = `{"x": "123", "y": "fff", "z": 2}`
func main() {
var b B
json.Unmarshal([]byte(myJSON), &b)
fmt.Print(b.X," ",b.Y," ",b.Z)
}
编辑:问题在此处被标记为重复,但A
显式填写字段会使我们的 API 混乱。同样在创建A
一个显式字段之后,结果是false false 2
这样它根本没有帮助。
拉莫斯之舞
相关分类