Go服務器在處理JSON數據方面很擅長。JSON是一種輕量級的數據交換格式,具有易讀易寫,易于解析的特點。使用Go服務器處理JSON數據可以讓我們更加方便和快速地進行數據交互。
在Go語言中,要處理JSON數據,我們需要借助內置的編解碼json包。使用該包可以將Go語言中的結構體轉換為JSON字符串,或將JSON字符串轉換為Go結構體。
示例:
type Person struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email,omitempty"` } p := Person{ Name: "Tom", Age: 25, } // 結構體轉JSON字符串 pJson, err := json.Marshal(p) if err != nil { log.Fatal(err) } fmt.Println(string(pJson)) // JSON字符串轉結構體 p2 := Person{} if err := json.Unmarshal(pJson, &p2); err != nil { log.Fatal(err) } fmt.Println(p2)
在實際應用中,我們可以從HTTP請求中獲取JSON數據,并對其進行處理。借助go的http包,我們可以方便地處理這些請求。
示例:
func handleRequest(w http.ResponseWriter, r *http.Request) { // 從請求中解析JSON數據 var data map[string]interface{} err := json.NewDecoder(r.Body).Decode(&data) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } name, ok := data["name"].(string) if !ok { http.Error(w, "Missing 'name' parameter", http.StatusBadRequest) return } // 將處理結果轉換為JSON字符串并寫入響應中 response := map[string]string{"message": "Hello " + name} responseJson, err := json.Marshal(response) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") w.Write(responseJson) } func main() { http.HandleFunc("/", handleRequest) log.Fatal(http.ListenAndServe(":8080", nil)) }
上述示例演示了如何從HTTP請求中獲取JSON數據,并將處理結果以JSON字符串的形式寫回響應中。通過go標準庫提供的json包和http包,我們可以完成更加復雜的JSON數據處理任務。
上一篇python 都干嘛用
下一篇go爬蟲json