GoLang Gin - 绑定来自 POST 请求的 JSON 数据将所有标识符字段重写为 0

GoLang Gin - Binding JSON data from POST request rewrites all Identifier Fields to 0

我正在使用 GoLang 迈出第一步,目前正在设置一个 API 服务器,它能够从 POST 请求读取 JSON 文件并将其保存到内存中。

我有一个 JSON 文件如下:

[
    {
        "id": 0,
        "name": "kubernetes",
        "uri": "https://github.com/kubernetes/kubernetes"
    },
    {
        "id": 1,
        "name": "jenkins",
        "uri": "https://github.com/jenkinsci/jenkins"
    }
]

我是 POST:ing 本地端口上的 API 服务器 运行。

这是我的 setupRoutes() - 函数:

func setupRoutes() {

    // Initialize Router
    router := gin.Default()

    // Initialize Routes
    router.GET("/api/projects", getProjects)
    router.GET("/api/projects/:id", getProjectByIdentifier)
    router.POST("/api/projects", uploadProjects)        

    // Start the Router
    router.Run("localhost:8080")
}

这是我的 uploadProjects() - 函数:

// Reads file from POST request, and saves that to Memory.
func uploadProjects(c *gin.Context) {

    // Initialize Object
    var obj []Project

    // Bind JSON Data to Object
    c.BindJSON(&obj)

    fmt.Println(obj) // For Testing: What is binded.

    // Save Data to Memory
    proj = obj

}

这是项目结构:

type Project struct {
    Identifier int64    `json: id`
    Name string         `json: name`
    Uri string          `json: uri`
}

执行此操作后 - 我可以立即打印出该数据,绑定的内容或者我可以使用我的 GET /api/projects 调用获取该数据,结果始终是:

[{0 kubernetes https://github.com/kubernetes/kubernetes} {0 jenkins https://github.com/jenkinsci/jenkins}]

我尝试过的:

这可能是一件非常简单的事情,但我真的不知道从哪里看这一点,所以感谢任何帮助。

id 字段与字段名称 Identifier 不匹配。使用格式正确的 JSON 字段标签进行修复。 JSON 编解码器无法识别问题中使用的字段标签。

type Project struct {
    Identifier int64    `json:"id"`
    Name string         `json:"name"`
    Uri string          `json:"uri"`
}