首页 > 解决方案 > 为什么 Revel JSON 响应中的所有键都不大写?

问题描述

我试图了解如何使用 Revel 框架实现 POST 请求。

在此处输入图像描述

模型/login.go

package models

type LoginParam struct {
    Username string `form:"username" json:"username"`
    Password string `form:"password" json:"password"`
}

type Response struct {
    Message string `json:"message`
    Data    string `json:"data"`
}

应用程序/控制器/login.go

package controllers

import (
    "mytestapi/app/models"
    "encoding/json"
    "log"
    "strconv"

    "github.com/revel/revel"
)

type Login struct {
    *revel.Controller
}

func (c Login) DoLogin() revel.Result {
    var login models.LoginParam
    var res models.Response

    err := json.NewDecoder(c.Request.GetBody()).Decode(&login)

    if err != nil {
        log.Fatal("JSON decode error: ", err)
    }

    res.Message = "OK"
    res.Data = login.Username + " " + login.Password

    defer c.Request.Destroy()
    return c.RenderJSON(res)
}

邮递员给出了这个输出:

{“消息”:“确定”,“数据”:“foo barzzzz”}

几乎正确。在 JSON 输出中,打印的是M essage 而不是m essage。为什么 Message 是大写的,而 data 不是?

标签: gorevel

解决方案


您在标记后缺少双引号message

type Response struct {
    Message string `json:"message`
    Data    string `json:"data"`
}

推荐阅读