猿问

golang 中的 json 编组数组

我回来再次询问,如果你们认为我缺乏搜索但我已经做了几个小时但我仍然不明白为什么


我在 Golang 中有一个这样的控制器:


c3 := router.CreateNewControllerInstance("index", "/v4")

c3.Post("/insertEmployee", insertEmployee)

并使用Postman抛出这个 arraylist 请求,请求是这样的


[{

  "IDEmployee": "EMP4570787",

  "IDBranch": "ALMST",

  "IDJob": "PRG",

  "name": "Mikey Ivanyushin",

  "street": "1 Bashford Point",

  "phone": "9745288064",

  "join_date": "2008-09-18",

  "status": "fulltime"

},{

  "IDEmployee": "EMP4570787",

  "IDBranch": "ALMST",

  "IDJob": "PRG",

  "name": "Mikey Ivanyushin",

  "street": "1 Bashford Point",

  "phone": "9745288064",

  "join_date": "2008-09-18",

  "status": "fulltime"

}]

而且我还有 2 个像这样的结构


type EmployeeRequest struct {

    IDEmployee string `json: "id_employee"`

    IDBranch   string `json: "id_branch"    `

    IDJob      string `json: "id_job"   `

    Name       string `json: "name" `

    Street     string `json: "street"   `

    Phone      string `json: "phone"    `

    JoinDate   string `json: "join_date"    `

    Status     string `json: "status"   `

    Enabled int `json: "enabled"    `

    Deleted int `json: "deletedstring"`

}


type ListEmployeeRequest struct {

    ListEmployee []EmployeeRequest `json: "request"`

}

出于某种原因,问题从这里开始,当我尝试运行我的函数来读取我从 Postman 发送的 json 时


这是我尝试运行的功能


func insertEmployee(ctx context.Context) {

    tempReq := services.ListEmployeeRequest{}


    temp1 := ctx.ReadJSON(&tempReq.ListEmployee)


    var err error

    if err = ctx.ReadJSON(temp1); config.FancyHandleError(err) {

        fmt.Println("err readjson ", err.Error())

    }

    parsing, errParsing := json.Marshal(temp1)

        fmt.Println("", string(parsing))

    fmt.Print("", errParsing)

}

问题出现在 if err = ctx.ReadJSON(temp1) 线上;config.FancyHandleError(err) 它告诉我 JSON 输入意外结束,当我从 Postman 发出请求时,我做错了什么吗?或者我输入了错误的验证码?


有人可以告诉我下一步该怎么做才能读取我从邮递员那里抛出的 JSON 吗?


感谢您的关注和帮助,非常喜欢<3


扬帆大鱼
浏览 124回答 2
2回答

拉风的咖菲猫

您在这里有多个问题:标签名称与 JSON 输入不匹配,例如id_employeevs IDEmployee。您的标签语法不正确,它在您运行时显示go vet,应该是json:"id_employee"你不需要另一个List结构,如果你使用它,你的 json 应该是{"requests":[...]}. 相反,您可以反序列化一个切片:var requests []EmployeeRequestif err := json.Unmarshal([]byte(j), &requests); err != nil {    log.Fatal(err)}

胡子哥哥

type EmployeeRequest struct {&nbsp; &nbsp; IDEmployee string `json:"IDEmployee"`&nbsp; &nbsp; IDBranch&nbsp; &nbsp;string `json:"IDBranch"`&nbsp; &nbsp; IDJob&nbsp; &nbsp; &nbsp; string `json:"IDJob"`&nbsp; &nbsp; Name&nbsp; &nbsp; &nbsp; &nbsp;string `json:"name"`&nbsp; &nbsp; Street&nbsp; &nbsp; &nbsp;string `json:"street"`&nbsp; &nbsp; Phone&nbsp; &nbsp; &nbsp; string `json:"phone"`&nbsp; &nbsp; JoinDate&nbsp; &nbsp;string `json:"join_date"`&nbsp; &nbsp; Status&nbsp; &nbsp; &nbsp;string `json:"status"`&nbsp; &nbsp; Enabled int `json:"enabled"`&nbsp; &nbsp; Deleted int `json:"deletedstring"`}一些 json 标签与字段不匹配。
随时随地看视频慕课网APP

相关分类

Go
我要回答