去json.Unmarshal野外案

时间:2017-07-25 20:43:58

标签: json go

我是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>

这是预期的行为吗?大会可以关闭吗?

1 个答案:

答案 0 :(得分:2)

需要导出字段(使用大写的第一个字母声明),否则反射库无法编辑它们。由于JSON(un)marshaller使用反射,因此无法读取或写入未导出的字段。

是的,这是预期的,不,你不能改变它。遗憾。

您可以在字段中添加标签以更改编组使用的名称:

Model string `json:"model"`

有关“encoding / json”支持的字段标记的详细信息,请参阅the documentation