中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在golang中讀寫json數據

發布時間:2021-04-29 16:06:37 來源:億速云 閱讀:306 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在golang中讀寫json數據,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

什么是golang

golang 是Google開發的一種靜態強類型、編譯型、并發型,并具有垃圾回收功能的編程語言,其語法與 C語言相近,但并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能。

首先,定義結構體:

type Com struct {                                                                                                                                                          
        Name string
        Nodes []string
}

讀取操作(從文件中讀取json數組到結構體數組中):

func load(fname string) {
        var cs []Com = make([]Com, 0)
        fp, err := os.Open(fname)
        if err != nil {
                panic(err)
        }      
        defer fp.Close()
        bytes, err := ioutil.ReadAll(fp)
        if err != nil {
                panic(err)
        }      
        err = json.Unmarshal(bytes, &cs)
        if err != nil {
                panic(err)
        }
        //使用cs
        ...       
}

寫出操作(將結構體數組轉換為json數組并寫入文件):

func dump(fname string) {
        fp, err := os.Create(fname)
        if err != nil {
                panic(err)
        }  
        defer fp.Close()
        cs := []Com{}
        cs = append(cs, Com{"1", []string{"1.1", "2.2"}})
        cs = append(cs, Com{"2", []string{"2.2", "3.2"}})
        cs = append(cs, Com{"3", []string{"3.4", "4.5"}})
        data, err := json.Marshal(cs)
        if err != nil {
                panic(err)
        }  
        n, err := fp.Write(data)
        if err != nil {
                panic(err)
        }  
}

補充:go 讀取 json 配置文件

引言

go 讀取 json 配置文件,主要有兩個知識點:一是文件的讀取,二是 json 數據的處理。

序列化與反序列化

對 json 數據的處理往往指的是數據的序列化和反序列化。

把變量從內存中變成可存儲或傳輸的過程稱之為序列化,序列化之后,就可以把序列化后的內容寫入到磁盤,或者通過網絡傳輸到別的機器上。反過來,把變量內容從序列化的對象重新讀到內存里稱之為反序列化。

go 有內置對 json 數據的處理包 “encoding/json”。

序列化為 json 格式:

data, err := json.Marshal(infos)

反序列化 json 數據:

err := json.Unmarshal(str, &info)

文件讀取

配置文件的讀取

config.json

{
  "userName":"root",
  "password":"",
  "host":"localhost",
  "port":"3306",
  "dbName": "test",
  "tableName":"table"
}

config.go

package main
import (
 "encoding/json"
 "fmt"
 "sync"
 io "io/ioutil"
)
//定義配置文件解析后的結構
type UserInfo struct {
 UserName  string `json:userName`
 Password  string `json:password`
 Host      string `json:host`
 Port     string `json:port`
 DbName    string `json:dbName`
 TableName string `json:tableName`
}
var UserIn UserInfo
var file_locker sync.Mutex //config file locker
func InitConfig() bool {
 conf, bl := LoadConfig("./config.json") //get config struct
 if !bl {
  fmt.Println("InitConfig failed")
  return false
 }
 UserIn = conf
 return true
}
/*************************************************
Function: LoadConfig
Description: read config file to config struct
@parameter filename: config file
Return: Config,bool
*************************************************/
func LoadConfig(filename string) (UserInfo, bool) {
 var conf UserInfo
 file_locker.Lock()
 data, err := io.ReadFile(filename) //read config file
 file_locker.Unlock()
 if err != nil {
  fmt.Println("read json file error")
  return conf, false
 }
 datajson := []byte(data)
 err = json.Unmarshal(datajson, &conf)
 if err != nil {
  fmt.Println("unmarshal json file error")
  return conf, false
 }
 return conf, true
}
func main() {
 bl := InitConfig()
 if !bl {
  fmt.Println("init config failed")
  return
 }
}

關于如何在golang中讀寫json數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淳化县| 龙江县| 岗巴县| 永嘉县| 凤冈县| 綦江县| 遂川县| 莎车县| 广汉市| 浮山县| 陆丰市| 武川县| 兴山县| 祥云县| 涿鹿县| 淮北市| 赤壁市| 庄浪县| 邯郸市| 西乌珠穆沁旗| 仙游县| 云浮市| 大英县| 陆良县| 宜良县| 理塘县| 莱州市| 武平县| 琼中| 揭阳市| 石狮市| 湟源县| 永德县| 明溪县| 古浪县| 灌阳县| 精河县| 三门县| 天等县| 峨边| 邢台县|