Go語(yǔ)言在網(wǎng)絡(luò)編程和Web開(kāi)發(fā)方面表現(xiàn)出色,具有高效、高并發(fā)等特點(diǎn),受到越來(lái)越多的開(kāi)發(fā)者的喜歡。在Go編寫(xiě)JSON服務(wù)器是一個(gè)普遍的需求,它可以快速構(gòu)建一個(gè)服務(wù)端API,滿足無(wú)線客戶端請(qǐng)求數(shù)據(jù)的需求。
本文將介紹如何使用Go語(yǔ)言編寫(xiě)一個(gè)JSON服務(wù)器,讓我們一起來(lái)看看:
//導(dǎo)入必要的包 import( "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) //定義HTTP服務(wù)器的路由函數(shù) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8899", nil) } //HTTP請(qǐng)求處理函數(shù) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "JSON服務(wù)器示例") //讀取請(qǐng)求體 body, err := ioutil.ReadAll(r.Body) if err != nil { log.Fatal(err) } //轉(zhuǎn)換JSON格式 var data map[string]interface{} err = json.Unmarshal(body, &data) if err != nil { log.Fatal(err) } //輸出JSON格式數(shù)據(jù) jsonData, err := json.Marshal(data) if err != nil { log.Fatal(err) } fmt.Fprintf(w, string(jsonData)) }
運(yùn)行該代碼后,通過(guò)訪問(wèn)http://localhost:8899/可以看到JSON服務(wù)器示例。我們還可以通過(guò)POST請(qǐng)求發(fā)送JSON格式數(shù)據(jù),服務(wù)器會(huì)讀取請(qǐng)求體并返回相同的JSON數(shù)據(jù)。
Go語(yǔ)言的JSON包提供了豐富的功能,可以很方便地進(jìn)行JSON編碼和解碼。我們只需要在路由函數(shù)中讀取請(qǐng)求體,然后將其轉(zhuǎn)換成Go語(yǔ)言的數(shù)據(jù)類(lèi)型,再使用JSON包進(jìn)行轉(zhuǎn)換輸出即可。