我正在使用 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:發送到在本地埠上運行的 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}]
我試過的:
- 我試圖在我的結構中的字串、int 和 int64 型別的識別符號欄位之間進行交換。
- 谷歌搜索了一堆
這可能是非常簡單的事情,但我真的不知道在哪里看這一點,所以任何幫助表示贊賞。
uj5u.com熱心網友回復:
該id欄位與欄位名稱不匹配Identifier。通過使用格式正確的 JSON 欄位標簽進行修復。JSON 編解碼器無法識別問題中使用的欄位標簽。
type Project struct {
Identifier int64 `json:"id"`
Name string `json:"name"`
Uri string `json:"uri"`
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483340.html
