iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

和地鼠做30天好朋友系列 第 9

地鼠和JSON

  • 分享至 

  • xImage
  •  

JSON在後端和前端的世界中是一個常見的資料格式,它是一種輕量級的數據交換格式,易於人類閱讀和編寫,同時也易於機器解析和生成。在Golang中,我們可以使用標準庫中的"encoding/json"包來輕鬆處理JSON。以下就來Show you codes

首先,讓我們認識一下JSON數據的基本結構。一個JSON 由一組鍵值對組成,鍵和值之間使用冒號分隔,不同鍵值對之間使用逗號分隔。例如:

{
    "name": "jimmy",
    "age": 29
}

我們可以將這個JSON對象保存在一個名為example.json的文件中,以便後續我們繼續撰寫我們的程式碼。

接下來,我們將展示如何在Golang中讀取這個JSON,並將其轉換到一個Go結構體中。首先,我們定義了一個名為User的Struct,Struct與JSON對象的鍵值對相對應,我們使用json標籤來定義這映射關係。然後,我們使用os.Open函數打開example.json文件,並使用ioutil.ReadAll函數讀取文件的內容。最後,我們使用json.Unmarshal函數將JSON數據解碼到User結構體中,並輸出用戶的姓名和年齡。

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
)

type User struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	jsonData, err := os.Open("./example.json")

	if err != nil {
		fmt.Println(err)
	}
	defer jsonData.Close()

	byteData, _ := ioutil.ReadAll(jsonData)

	var u User
	json.Unmarshal(byteData, &u)
	fmt.Printf("User: %s, and Age: %d\n", u.Name, u.Age)
}

接下來,我們將展示如何將一個Go對象生成為JSON數據。在這個示例中,我們創建了一個名為User的Struct,並一樣給了姓名和年齡的值與關係。然後,我們使用json.MarshalIndent(或者 json.Marshal)函數將User Struct 編碼為JSON數據,並將其保存在一個名為example.json的文件中:

package main

import (
	"encoding/json"
	"fmt"
	"os"
)

type User struct {
	Name string
	Age  int
}

func main() {
	var u User
	u = User{Name: "Jimmy", Age: 29}

	byteData, err := json.MarshalIndent(u, "", "    ") // or json.Marshal(u)

	if err != nil {
		fmt.Println("json err")
	}

	jsonFile, err := os.Create("./example.json")

	if err != nil {
		fmt.Println("create json file error")
	}

	size, err := jsonFile.Write(byteData)

	if err != nil {
		fmt.Println("write file error")
	}

	defer jsonFile.Close()

	fmt.Printf("file Wrote %d bytes\n", size)
}

上一篇
地鼠,幫圖片加亮一點吧
下一篇
地鼠和CSV
系列文
和地鼠做30天好朋友12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言