Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法
Go 語(yǔ)言中 encoding/json 包可以很方便的將結(jié)構(gòu)體、數(shù)組、字典轉(zhuǎn)換為 json 字符串。
引用
import "encoding/json"
解析語(yǔ)法
// v 傳入結(jié)構(gòu)體、數(shù)組等實(shí)例變量
// []byte 字節(jié)數(shù)組
// error 可能會(huì)有的錯(cuò)誤
func Marshal(v interface{}) ([]byte, error)
反解析
// []byte 字節(jié)數(shù)組
// v 傳入結(jié)構(gòu)體、數(shù)組等實(shí)例變量的指針地址
// error 可能會(huì)有的錯(cuò)誤
func Unmarshal(data []byte, v interface{}) error
代碼
package main
// https://golang.org/pkg/encoding/json/
// https://cloud.tencent.com/developer/section/1141542#stage-100023262
import (
"fmt"
"encoding/json"
)
type User struct {
Id int `json:"id"`
Name string `json:"name"`
}
func main() {
// 字符串解析為結(jié)構(gòu)體
s := `{"id": 1, "name": "wxnacy"}`
var user User
// 將字符串反解析為結(jié)構(gòu)體
json.Unmarshal([]byte(s), &user)
fmt.Println(user) // {1 wxnacy}
var d map[string]interface{}
// 將字符串反解析為字典
json.Unmarshal([]byte(s), &d)
fmt.Println(d) // map[id:1 name:wxnacy]
s = `[1, 2, 3, 4]`
var a []int
// 將字符串反解析為數(shù)組
json.Unmarshal([]byte(s), &a)
fmt.Println(a) // [1 2 3 4]
// 將結(jié)構(gòu)體解析為字符串
b, e := json.Marshal(user)
fmt.Println(e)
fmt.Println(string(b)) // {"id":1,"name":"wxnacy"}
b, e = json.Marshal(a)
fmt.Println(string(b), e) // [1,2,3,4] <nil>
b, e = json.Marshal(d)
fmt.Println(string(b), e) // {"id":1,"name":"wxnacy"} <nil>
}
以上這篇Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JavaScript實(shí)現(xiàn)字符串轉(zhuǎn)數(shù)組的6種方法總結(jié)
- 如何將JSON字符串?dāng)?shù)組轉(zhuǎn)對(duì)象集合
- JS數(shù)組轉(zhuǎn)字符串實(shí)現(xiàn)方法解析
- JS字符串和數(shù)組如何實(shí)現(xiàn)相互轉(zhuǎn)化
- javascript實(shí)現(xiàn)的字符串轉(zhuǎn)換成數(shù)組操作示例
- JS實(shí)現(xiàn)將二維數(shù)組轉(zhuǎn)為json格式字符串操作示例
- JSON PHP中,Json字符串反序列化成對(duì)象/數(shù)組的方法
- JS實(shí)現(xiàn)字符串去重及數(shù)組去重的方法示例
- JS字符串轉(zhuǎn)換為數(shù)組的4 個(gè)方法示例小結(jié)
相關(guān)文章
詳解Go語(yǔ)言中new和make關(guān)鍵字的區(qū)別
本篇文章來(lái)介紹一道非常常見(jiàn)的面試題,到底有多常見(jiàn)呢?可能很多面試的開(kāi)場(chǎng)白就是由此開(kāi)始的。那就是 new 和 make 這兩個(gè)內(nèi)置函數(shù)的區(qū)別,希望對(duì)大家有所幫助2023-03-03
Go語(yǔ)言中的Slice學(xué)習(xí)總結(jié)
這篇文章主要介紹了Go語(yǔ)言中的Slice學(xué)習(xí)總結(jié),本文講解了Slice的定義、Slice的長(zhǎng)度和容量、Slice是引用類(lèi)型、Slice引用傳遞發(fā)生“意外”等內(nèi)容,需要的朋友可以參考下2014-11-11
Go可變參數(shù)函數(shù)的實(shí)現(xiàn)
可變參數(shù)函數(shù)是指函數(shù)參數(shù)的某個(gè)參數(shù)可有可無(wú),即這個(gè)參數(shù)的個(gè)數(shù)可以為0會(huì)多個(gè),可變參數(shù)函數(shù)參數(shù)在日常編程中大量使用,本文主要介紹了Go可變參數(shù)函數(shù)的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12
golang調(diào)用藍(lán)兔支付實(shí)現(xiàn)網(wǎng)上支付功能
支付寶、微信的網(wǎng)上支付需要營(yíng)業(yè)執(zhí)照個(gè)人無(wú)法直接使用,如果個(gè)人需要實(shí)現(xiàn)網(wǎng)上支付功能,目前大部分應(yīng)該是都是依賴(lài)第三方聚合支付來(lái)實(shí)現(xiàn),本文就來(lái)介紹一下如何調(diào)用藍(lán)兔支付實(shí)現(xiàn)網(wǎng)上支付功能,有需要的可以參考下2023-09-09
Go并發(fā):使用sync.WaitGroup實(shí)現(xiàn)協(xié)程同步方式
這篇文章主要介紹了Go并發(fā):使用sync.WaitGroup實(shí)現(xiàn)協(xié)程同步方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
Go語(yǔ)言構(gòu)建流數(shù)據(jù)pipeline的示例詳解
Go的并發(fā)原語(yǔ)可以輕松構(gòu)建流數(shù)據(jù)管道,從而高效利用?I/O?和多個(gè)?CPU,?本文展示了此類(lèi)pipelines的示例,強(qiáng)調(diào)了操作失敗時(shí)出現(xiàn)的細(xì)微之處,并介紹了干凈地處理失敗的技術(shù),希望對(duì)大家有所幫助2024-02-02
Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解
這篇文章主要介紹了如何利用Go語(yǔ)言實(shí)現(xiàn)對(duì)文件夾的常用操作:創(chuàng)建于刪除。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05
Go?gRPC進(jìn)階教程服務(wù)超時(shí)設(shè)置
這篇文章主要為大家介紹了Go?gRPC進(jìn)階,gRPC請(qǐng)求的超時(shí)時(shí)間設(shè)置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

