JSON是一種輕量級且易于使用的數據交換格式。在Golang中,向Web API發送JSON是一項常見的任務,這通常涉及將數據序列化為JSON并將其發送到遠程Web API。
// 定義一個結構體 type Person struct { Name string `json:"name"` Age int `json:"age"` } // 創建一個Person對象 person := Person{Name: "Alice", Age: 25} // 將對象轉換為JSON字符串 jsonBytes, err := json.Marshal(person) if err != nil { log.Fatal(err) } // 創建一個HTTP請求 req, err := http.NewRequest(http.MethodPost, "http://example.com/api", bytes.NewBuffer(jsonBytes)) if err != nil { log.Fatal(err) } // 設置請求頭 req.Header.Set("Content-Type", "application/json") // 發送請求 client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() // 解析響應 var result map[string]interface{} err = json.NewDecoder(resp.Body).Decode(&result) if err != nil { log.Fatal(err) } // 輸出響應數據 fmt.Println(result)
在上面的示例中,我們首先定義了一個名為Person的結構體來表示一個人物對象,然后創建了一個Person實例,并使用json.Marshal將其轉換為JSON字符串。 接下來,我們創建了一個HTTP請求,并將JSON字符串作為請求正文發送。 在發送請求之前,我們設置了請求頭以指定JSON格式。 使用http.Client.Do方法發送請求并等待響應。 最后,我們使用json.Unmarshal方法將響應的JSON字符串轉換為一個名為result的map。 我們可以使用fmt.Println來輸出響應數據。