我是Go的新手。我试图将json数据提取并编组到结构中。我的示例数据如下所示:
var reducedFieldData = []byte(`[
{"model":"Traverse","vin":"1gnkrhkd6ej111234"}
,{"model":"TL","vin":"19uua66265a041234"}
]`)
如果我定义接收数据的结构如下:
type Vehicle struct {
Model string
Vin string
}
对Unmarshal的调用按预期工作。但是,如果我使用小写字段(" model"和#34; vin")实际上匹配数据中字段名称的大小写,它将返回值的空字符串。 / p>
这是预期的行为吗?大会可以关闭吗?
答案 0 :(得分:2)
需要导出字段(使用大写的第一个字母声明),否则反射库无法编辑它们。由于JSON(un)marshaller使用反射,因此无法读取或写入未导出的字段。
是的,这是预期的,不,你不能改变它。遗憾。
您可以在字段中添加标签以更改编组使用的名称:
Model string `json:"model"`
有关“encoding / json”支持的字段标记的详细信息,请参阅the documentation。