结构内部的切片

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


慕侠2389804
浏览 74回答 1
1回答

跃然一笑

正如Burak所评论的那样,你的卷曲命令不应该是...curl --header "Content-Type: application/json" -X POST -d '{"targets":["localhost"], "labels": { "job": "job1", "env":"prod"}}'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go