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