首頁 > 後端開發 > Golang > golang怎麼回傳json

golang怎麼回傳json

王林
發布: 2023-05-15 13:29:37
原創
1477 人瀏覽過

在開發網站或網路應用程式時,經常需要透過 API 的形式傳回 JSON 資料。因此,掌握如何在 Golang 中傳回 JSON 資料至關重要。

本文將介紹 Golang 的 json 套件及其基本用法,以及如何使用它來將 Golang 資料結構編碼為 JSON 字串或將 JSON 字串解碼為 Golang 資料結構。

  1. 基本用法

在 Golang 程式中,使用 json 套件操作 JSON 資料非常簡單。可以將 JSON 字串解析為 Golang 變量,也可以將 Golang 變數編碼為 JSON 字串。

  1. 將Golang 變數編碼為JSON 字串

在Golang 程式中,如果需要將Golang 變數編碼為JSON 字串,可以使用json.Marshal() 函數來完成這個任務。以下是一個範例程序,示範如何將Go 結構體編碼為JSON 字串:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{"Tom", 30}

    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("error:", err)
        return
    }

    fmt.Println(string(b))
}
登入後複製

輸出結果為:

{"Name":"Tom","Age":30}
登入後複製

在上面的範例程式中,Person 結構體包含兩個字段Name 和Age。我們將其實例化為一個名為 p 的變量,並將其傳遞給 json.Marshal() 函數。函數將傳回一個 JSON 字串的位元組數組及一個可選的錯誤。

如果JSON編碼失敗,將會傳回一個非空錯誤。在上述範例中,我們檢查錯誤並輸出錯誤訊息。

注意:使用 json.Marshal() 編碼 JSON 字串時,JSON 欄位的名稱是結構體欄位的名稱,必須大寫字母開頭。

  1. 將JSON 字串解碼為Golang 變數

在Golang 程式中,如果需要將JSON 字串解碼為Golang 變量,可以使用json.Unmarshal() 函數。以下是一個範例程序,示範如何將JSON 字串解碼為Go 結構體:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    jsonStr := `{"Name":"Tom","Age":30}`
    var p Person

    err := json.Unmarshal([]byte(jsonStr), &p)
    if err != nil {
        fmt.Println("error:", err)
        return
    }

    fmt.Println(p.Name, p.Age)
}
登入後複製

輸出結果為:

Tom 30
登入後複製

在上面的範例程式中,我們將JSON 字串與空的Person 結構體進行解碼。需要將 JSON 字串轉換為位元組數組,該位元組數組會被修改以適應解碼結果。解碼結果將儲存在經過 unmarshal 的變數中。

這裡使用了一個 & 運算符,用於將變數位址傳遞給函數,並將其用於實際結果的修改。

同樣的,如果 JSON 解碼失敗,將會傳回一個錯誤並列印錯誤訊息。

  1. 傳回 JSON 資料

在 Golang 中,可以使用 net/http 套件建立 API,傳回 JSON 資料。以下是一個簡單的範例程序,示範如何使用 Golang 返回 JSON 資料:

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    http.HandleFunc("/person", handlePerson)
    http.ListenAndServe(":8080", nil)
}

func handlePerson(w http.ResponseWriter, r *http.Request) {
    p := Person{"Tom", 30}

    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("error:", err)
        return
    }

    w.Header().Set("Content-Type", "application/json")
    w.Write(b)
}
登入後複製

在上面的範例程式中,我們建立了一個基本的HTTP伺服器,使用了 net/http 套件。我們使用 http.HandleFunc() 函數來將路徑 /person 和 handlePerson 處理函數進行綁定。

handlePerson 函數傳回了一個具有 Name 和 Age 欄位的 Person 結構體。它將使用 json.Marshal() 函數將 Person 結構體編碼為 JSON 格式。最後,我們使用 http.ResponseWriter 介面來寫入 JSON 回應。在寫入之前,我們使用 w.Header().Set() 函數設定了回應頭的 Content-Type 為 application/json。

現在,你已經知道如何使用 Golang 編碼和解碼 JSON 數據,以及如何在 HTTP 回應中傳回 JSON 資料。學會這些技能將使你在開發網頁應用程式時更加得心應手。

以上是golang怎麼回傳json的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板