go - json.Unmarshal 在进行 curl 调用时不填充结构

标签 go

我正在尝试填充结构并进行一些进一步的操作,我在结构中的字段已导出,但当我进行 curl 时该值未填充。

package main

import (
    "encoding/json"
    "io/ioutil"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

type Y struct {
    Name      string   `json:"name"`
    EventType []string `json:"eventType"`
}

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/config/export/eventtypes", eventTypes).Methods("GET")
    router.HandleFunc("/config/export/ia/outputs", createEventList).Methods("POST")
    http.ListenAndServe(":8000", router)
}

func eventTypes(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")

    var resp []map[string]string
    x := make(map[string]string)
    x["name"] = "HTTP"
    x["description"] = "http"
    resp = append(resp, x)
    x1 := make(map[string]string)
    x1["name"] = "KRB"
    x1["description"] = "http"
    resp = append(resp, x1)
    x2 := make(map[string]string)
    x2["name"] = "FileINFO"
    x2["description"] = "http"
    resp = append(resp, x2)

    json.NewEncoder(w).Encode(resp)
}

func createEventList(w http.ResponseWriter, r *http.Request) {
    var s Y
    x, _ := ioutil.ReadAll(r.Body)
    log.Printf("%v", string(x))
    json.Unmarshal([]byte(x), &s)
    log.Printf("%+v", s)

}
我正在使用 curl -H "Content-Type: application/json" -X POST http://localhost:8000/config/export/ia/outputs -d'{"name":"test","eventType":"["http","dmtp"]"}' 进行测试我的输出是{ []}但是当我尝试使用 python 代码时也是一样的
    myobj = {"name":"test","eventType":test}

y= requests.post("http://localhost:8000/config/export/ia/outputs",json=myobj)
打印 {Name:test EventType:[HTTP KRB FileINFO]}

最佳答案

删除 curl 请求中数组的引号

关于go - json.Unmarshal 在进行 curl 调用时不填充结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63844849/

相关文章:

go - 何时在 Go 中刷新文件?

go - 复杂字符串格式验证

dll - 是否可以在平板电脑上运行我的 Windows 8 C/go/html 程序

mysql - 去-导入sql.a : not a package file

sockets - 如何在 Go 中为 TCP 数据包设置 "don' t 片段”标志位?

go - 类型实现中的隐藏方法?

google-app-engine - 如何在 Go 中的 GAE-Datastore 上插入多值属性?

go - 在 `go install package` 期间创建一些二进制文件

go - posFlag 需要什么样的编码?

function - 去链式函数调用?