结构内部的切片



我正在尝试创建一个具有以下结构的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"}}'

正如Burak所评论的,你的curl命令不应该是。。。

curl --header "Content-Type: application/json" -X POST -d '{"targets":["localhost"], "labels": { "job": "job1", "env":"prod"}}'

最新更新