我正在尝试创建具有以下结构的json文件:
[
{
"targets": [ "aaaa", "bbbb" ],
"labels": {
"env": "dev",
"job": "cadvisor"
}
}
]
到目前为止,我已经定义了两个结构:
type Label struct {
Job string `json:"job"`
Env string `json:"env"`
}
type Target struct {
Targets []string `json:"targets"`
Labels Label `json:"labels"`
}
但是当我执行 POST 请求时,我收到一个错误:.json: cannot unmarshal string into Go struct field Target.targets of type []string
这是我用来从POST请求中获取json数据的函数:
func addNewTarget(w http.ResponseWriter, r *http.Request) {
//define new struct to hold new json from POST request
var t Target
err := json.NewDecoder(r.Body).Decode(&t)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
}
我真的不明白我在这里做错了什么。我假设这与我附加到未在任何地方初始化的切片有关,但说实话,我不知道如何做到这一点。任何人都可以给我一些指示吗?
这是我正在使用的卷曲:
curl --header "Content-Type: application/json" -X POST -d '{"targets":"localhost", "labels": { "job": "job1", "env":"prod"}}'
跃然一笑
相关分类