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}]
我尝试过的:
- 我尝试在我的结构中的字符串、整数和 int64 类型的标识符字段之间进行交换。
- 用谷歌搜索了一堆
这可能是一件非常简单的事情,但我真的不知道从哪里看这一点,所以感谢任何帮助。
id
字段与字段名称 Identifier
不匹配。使用格式正确的 JSON 字段标签进行修复。 JSON 编解码器无法识别问题中使用的字段标签。
type Project struct {
Identifier int64 `json:"id"`
Name string `json:"name"`
Uri string `json:"uri"`
}
我正在使用 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}]
我尝试过的:
- 我尝试在我的结构中的字符串、整数和 int64 类型的标识符字段之间进行交换。
- 用谷歌搜索了一堆
这可能是一件非常简单的事情,但我真的不知道从哪里看这一点,所以感谢任何帮助。
id
字段与字段名称 Identifier
不匹配。使用格式正确的 JSON 字段标签进行修复。 JSON 编解码器无法识别问题中使用的字段标签。
type Project struct {
Identifier int64 `json:"id"`
Name string `json:"name"`
Uri string `json:"uri"`
}