Fullcalendar не отображает события, полученные из golang gin

Я новичок в golang и web-dev, я использую джин в качестве API для предоставления событий для fullcalendar как json. Вот мои настройки событий fullcalendar:

<script>
    $(function(){
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            defaultView: 'month',
            events: {
                url: '/events',
                type: 'POST'
            }
        })
    });
</script>

Ниже мой обработчик джина:

func EventsJSON(c *gin.Context) {
    start := c.PostForm("start")
    end := c.PostForm("end")
    es := models.GetEvents(start, end)
    jes, err := json.Marshal(es)
    if err != nil {
        fmt.Println(err)
    }
    c.JSON(200, gin.H{"events": jes})
}

Ниже приведены события [], возвращенные из db и jes:

[{"id":1,"title":"test event",
  "start":"2018-10-09T20:07:50.402286+08:00",
  "end":"2018-10-09T20:57:50.402286+08:00",
  "description":1},
 {"id":2,"title":"test event",
  "start":"2018-10-11T15:03:43.963198+08:00",
  "end":"2018-10-11T15:53:43.963198+08:00",
  "description":1}]

[91 123 34 105 100 34 58 49 44 34 116 105 116 108 101 34 58 34 116 101 115 116 32 101 118 101 110 116 34 44 34 115 116 97 114 116 34 58 34 50 48 49 56 45 49 48 45 48 57 84 50 48 58 48 55 58 53 48 46 52 48 50 50 56 54 43 48 56 58 48 48 34 44 34 101 110 100 34 58 34 50 48 49 56 45 49 48 45 48 57 84 50 48 58 53 55 58 53 48 46 52 48 50 50 56 54 43 48 56 58 48 48 34 44 34 100 101 115 99 114 105 112 116 105 111 110 34 58 49 125 44 123 34 105 100 34 58 50 44 34 116 105 116 108 101 34 58 34 116 101 115 116 32 101 118 101 110 116 34 44 34 115 116 97 114 116 34 58 34 50 48 49 56 45 49 48 45 49 49 84 49 53 58 48 51 58 52 51 46 57 54 51 49 57 56 43 48 56 58 4848 34 44 34 101 110 100 34 58 34 50 48 49 56 45 49 48 45 49 49 84 49 53 58 53 51 58 52 51 46 57 54 51 49 57 56 43 48 56 58 48 48 34 44 34 100 101 115 99 114 105 112 116 105 111 110 34 58 49 125 93]

Но события не отображаются в календаре, я не уверен, должен ли я преобразовать его в строку (jes), прежде чем отвечать клиенту, или что-то не так с конфигурацией событий fullcalendar

Я проверил тело ответа и обнаружил, что события такие

{"events":"W3siaWQiOjEsInRpdGxlIjoidGVzdCBldmVudCIsInN0YXJ0IjoiMjAxOC0xMC0wOVQyMDowNzo1MC40MDIyODYrMDg6MDAiLCJlbmQiOiIyMDE4LTEwLTA5VDIwOjU3OjUwLjQwMjI4NiswODowMCIsImRlc2NyaXB0aW9uIjoxfSx7ImlkIjoyLCJ0aXRsZSI6InRlc3QgZXZlbnQiLCJzdGFydCI6IjIwMTgtMTAtMTFUMTU6MDM6NDMuOTYzMTk4KzA4OjAwIiwiZW5kIjoiMjAxOC0xMC0xMVQxNTo1Mzo0My45NjMxOTgrMDg6MDAiLCJkZXNjcmlwdGlvbiI6MX1d"}

Я делаю строку (jes), и ответ json становится

{"events":"[{\"id\":1,\"title\":\"test event\",\"start\":\"2018-10-09T20:07:50.402286+08:00\",\"end\":\"2018-10-09T20:57:50.402286+08:00\",\"description\":1},{\"id\":2,\"title\":\"test event\",\"start\":\"2018-10-11T15:03:43.963198+08:00\",\"end\":\"2018-10-11T15:53:43.963198+08:00\",\"description\":1}]"}

если я не делаю json.Marshal ()

func EventsJSON(c *gin.Context) {
    start := c.PostForm("start")
    end := c.PostForm("end")
    es := models.GetEvents(start, end)
    c.JSON(200, gin.H{"events": es})
}

reponse json становится таким, как показано ниже, но все еще не отображается

{"events":[{"id":1,"title":"test event",
 "start":"2018-10-09T20:07:50.402286+08:00",
 "end":"2018-10-09T20:57:50.402286+08:00","description":1}, 
{"id":2,"title":"test event",
 "start":"2018-10-11T15:03:43.963198+08:00",
 "end":"2018-10-11T15:53:43.963198+08:00","description":1}]}

Оказывается, c.JSON уже сериализовал его в json, но все же события не отображаются в календаре ...

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, не предоставляется точный формат ответа, который может прочитать fullcalendar, поэтому изменение обработчика, чтобы не отвечать ключом, решает проблему.

func EventsJSON(c *gin.Context) {
start := c.PostForm("start")
end := c.PostForm("end")
es := models.GetEvents(start, end)
c.JSON(200, es})
}

Другие вопросы по теме