Как разобрать массив внутри поста формы - PullRequest
0 голосов
/ 28 сентября 2019

В настоящее время у меня есть сообщение в форме, например

{
 "stuff":"cool text",
 "otherthing":"neat thing",
 "captions":[
     {"first":"the list",
     "second":"how are you"},
     {"first":"wow",
     etc....
  ]
}

Теперь я не знаю, сколько будет подписей.Это может быть один в массиве, может быть двадцать.

Я также установил две структуры

type ThingContext struct {
    Stuff       string  `json:"stuff"`
    OtherThing  string  `json:"otherthing"`
    Captions    []ArrayText `json:"captions"`
}

type ArrayText struct {
    First    string  `json:"first"`
    Second   string  `json:"second"`
}

И в моей функции golang у меня есть что-то вроде

func (c *ThingContext) SetThingContext(rw web.ResponseWriter, req *web.Request, next web.NextMiddlewareFunc) {
    if err := req.ParseForm(); err != nil {
    }
    c.Stuff = req.FormValue("stuff")
    c.OtherThing = req.FormValue("otherthing")
}

Это прекрасно работает, пока я не попытаюсь разобрать массив.Когда я делаю что-то вроде c.Captions = req.ParseForm("captions"), я получаю ошибку

.cannot use req.Request.ParseForm("captions") (type error) as type []ArrayText in assignment

1 Ответ

0 голосов
/ 28 сентября 2019

Вы делаете это правильно, за исключением задания.При запуске req.Request.ParseForm () вместо возврата значения или передачи ссылки на буфер он заполняет структуры req.Request.Form и req.Request.PostForm.

Соответствующий GoDoc, объясняющий упомянутую функцию

Так что вместо

c.Captions = req.Request.ParseForm()

Это будет выглядеть более похоже на

err := req.Request.ParseForm()
//check for errors as usual here
c.Captions = req.Request.Form
//or
c.Captions = req.Request.PostForm

Подход с этой стороны должен поставить васна правильном пути.

Ура!Taylor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...