golang, revel, Как разобрать сообщение json?

Я новичок в голанге, но очень стараюсь..

Я пытаюсь отправить json по почтовому запросу на контроллер Revel и проанализировать его на стороне Revel.

Но при получении результата я не могу его распаковать... Я отправляю массив

json_encode(array("one","two","three"))

Но я не могу найти правильный способ работы с такими данными. Я не уверен, нужно ли мне делать json перед отправкой или нет.

func (c KpiCtrl) GetData() revel.Result {
    content, _ := ioutil.ReadAll(c.Request.Body)
    ...
    return c.RenderJson(content)
    }

возвращается

"WyJvbmUiLCJ0d28iLCJ0aHJlZSJd"

Я пытался использовать json.Unmarshal, но он возвращает ошибки. Как лучше всего работать с почтовыми данными, отправляемыми curl на контроллер revel?


person Altenrion    schedule 08.02.2016    source источник
comment
Первое: проверьте и обработайте свои ошибки. Во-вторых: какой код вы использовали с json.Unmarshal?   -  person elithrar    schedule 08.02.2016
comment
Что показывает log.Printf("%q", content)? Единственное, что кодируется в JSON как строку base64, это []byte. Вы не забыли сначала расшифровать его?   -  person Ainar-G    schedule 08.02.2016
comment
Я попытался использовать json.Unmarshal([]byte(c.Request.Body), &myStruct) , но он сказал, что go не может преобразовать ..io.Reader в []byte....   -  person Altenrion    schedule 08.02.2016


Ответы (1)


Просто используйте стандартный декодер json:

   var content []string
   err := json.NewDecoder(c.Request.Body).Decode(&content)
   if err != nil {
       log.Fatal("JSON decode error: ", err)
   }
   defer c.Request.Body.Close()
   fmt.Println(content)
person wlredeye    schedule 08.02.2016
comment
Протестировал ваш ответ, работает как шарм. Спасибо, гуру Гофер =). - person Altenrion; 09.02.2016