最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang實(shí)現(xiàn)結(jié)構(gòu)體和Json格式數(shù)據(jù)之間的互相轉(zhuǎn)換

 更新時(shí)間:2025年12月18日 09:21:19   作者:BPDZZ  
這篇文章主要為大家詳細(xì)介紹了Golang實(shí)現(xiàn)結(jié)構(gòu)體和Json格式數(shù)據(jù)之間的互相轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

摘要

本節(jié)主要學(xué)習(xí)Golang結(jié)構(gòu)體和JSON序列化數(shù)據(jù)的轉(zhuǎn)換命令。

1. 結(jié)構(gòu)體到j(luò)son格式

1.1 簡(jiǎn)單轉(zhuǎn)換

Golang結(jié)構(gòu)體轉(zhuǎn)換成JSON格式數(shù)據(jù),主要在結(jié)構(gòu)體的相關(guān)字段中加入json : "keyword"字段。具體做法如下:

type Structname struct{
	feild1 Type1 `json:"keyword1"`
	feild2 Type2 `json:"keyword2"`
}

相關(guān)具體實(shí)例如下:

package message

import (
	"encoding/json"
	"log"
	"testing"
)

type Information struct{
	Name string `json:"name"`
	Addr string `json:"addr"`
}

func TestStructure(t *testing.T){
	var inf Information
	inf.Name="Alice"
	inf.Addr="Green Street"
	data,err:=json.Marshal(inf)
	if err!=nil{
		panic(err)
	}
	log.Println(string(data))
}

1.2 遞歸轉(zhuǎn)換

為了轉(zhuǎn)換一個(gè)嵌套結(jié)構(gòu)體為JSON格式文件,首先在需要轉(zhuǎn)換的結(jié)構(gòu)體中構(gòu)建json:"keyword"字段,其次,構(gòu)建一個(gè)嵌套的Golang結(jié)構(gòu)體,最后利用Json.Marshal函數(shù)進(jìn)行轉(zhuǎn)換。

package message

import (
	"encoding/json"
	"errors"
	"log"
	"testing"
)

type Employee struct {
	Position string `json:"position"`
	Name     Name   `json:"name"`
}

type Name struct {
	FirstName string `json:"firstname"`
	Surname   string `json:"surname"`
}

func TestStructure(t *testing.T){
	name:=Name{FirstName:"Zhang",Surname:"san"}
	employee:=Employee{Position:"China",Name: name}
	person,err:=json.Marshal(employee)
	if err!=nil{
		panic(errors.New("Wrong Converting behavior"))
	}
	log.Println(string(person))
}

2. json格式到結(jié)構(gòu)體

2.1 簡(jiǎn)單轉(zhuǎn)換

JSON格式數(shù)據(jù)轉(zhuǎn)換為Golang結(jié)構(gòu)體的過(guò)程,利用Json.Ummarshal函數(shù)進(jìn)行轉(zhuǎn)換,具體轉(zhuǎn)換例子如下:

package message

import (
	"encoding/json"
	"log"
	"testing"
)

type Information struct{
	Name string `json:"name"`
	Addr string `json:"addr"`
}

func TestStructure(t *testing.T){
	alice:="{\"name\":\"Alice\",\"addr\":\"Green Street\"}"
	inf:=new(Information)
	err:=json.Unmarshal([]byte(alice),inf)
	if err!=nil{
		panic(err)
	}
	log.Println(inf)
}

2.2 嵌套JSON格式數(shù)據(jù)轉(zhuǎn)換

類(lèi)似于嵌套結(jié)構(gòu)體轉(zhuǎn)換到JSON格式的過(guò)程,從JSON格式數(shù)據(jù)轉(zhuǎn)換到嵌套結(jié)構(gòu)體數(shù)據(jù)的過(guò)程,就是首先構(gòu)建嵌套JSON格式數(shù)據(jù),其次通過(guò)Json.Ummarshal函數(shù)轉(zhuǎn)換為嵌套結(jié)構(gòu)體數(shù)據(jù)。

package message

import (
	"encoding/json"
	"log"
	"testing"
)

type Employee struct {
	Position string `json:"position"`
	Name     Name   `json:"name"`
}

type Name struct {
	FirstName string `json:"firstname"`
	Surname   string `json:"surname"`
}

func TestStructure(t *testing.T){
	str:="{\"position\":\"China\",\"name\":{\"firstname\":\"Zhang\",\"surname\":\"san\"}}"
	person1:=new(Employee)
	json.Unmarshal([]byte(str),person1)
	log.Println(person1,person1.Name)
}

以上就是JSon格式數(shù)據(jù)和Golang結(jié)構(gòu)體之間的數(shù)據(jù)轉(zhuǎn)換過(guò)程。

到此這篇關(guān)于Golang實(shí)現(xiàn)結(jié)構(gòu)體和Json格式數(shù)據(jù)之間的互相轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Golang結(jié)構(gòu)體和Json互轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探討Go語(yǔ)言中的內(nèi)存分配策略從堆到棧

    深入探討Go語(yǔ)言中的內(nèi)存分配策略從堆到棧

    內(nèi)存管理是一個(gè)持續(xù)優(yōu)化的過(guò)程,需要開(kāi)發(fā)者在實(shí)際開(kāi)發(fā)中不斷積累經(jīng)驗(yàn),根據(jù)具體場(chǎng)景選擇合適的內(nèi)存分配策略,本文將深入探討Go語(yǔ)言中的內(nèi)存分配策略,從堆到棧的工作原理,以及如何優(yōu)化內(nèi)存使用,幫助開(kāi)發(fā)者寫(xiě)出更高效、更穩(wěn)定的Go程序
    2026-05-05
  • Go語(yǔ)言變量初始化的實(shí)現(xiàn)示例

    Go語(yǔ)言變量初始化的實(shí)現(xiàn)示例

    在Go語(yǔ)言中,變量的初始化是編寫(xiě)程序時(shí)經(jīng)常遇到的重要操作之一,本文主要介紹了Go語(yǔ)言變量初始化的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Go?Java?算法之字符串解碼示例詳解

    Go?Java?算法之字符串解碼示例詳解

    這篇文章主要為大家介紹了Go?Java?算法之字符串解碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 淺談Go語(yǔ)言中高效并發(fā)模式

    淺談Go語(yǔ)言中高效并發(fā)模式

    Go語(yǔ)言并發(fā)編程提供了豐富的模式,包括基礎(chǔ)Goroutine、Channel和Select機(jī)制,以及多種高級(jí)并發(fā)模式,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2025-10-10
  • 詳解Go語(yǔ)言如何判斷兩個(gè)對(duì)象是否相等

    詳解Go語(yǔ)言如何判斷兩個(gè)對(duì)象是否相等

    在編程中,判斷兩個(gè)對(duì)象是否相等是一項(xiàng)常見(jiàn)的任務(wù),同時(shí)判斷對(duì)象是否相等在很多情況下都非常重要,所以在接下來(lái)的內(nèi)容中,我們將詳細(xì)介紹在?Go?語(yǔ)言中如何判斷對(duì)象是否相等的方法和技巧,需要的可以參考一下
    2023-06-06
  • go 讀取BMP文件頭二進(jìn)制讀取方式

    go 讀取BMP文件頭二進(jìn)制讀取方式

    這篇文章主要介紹了go 讀取BMP文件頭二進(jìn)制讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go并發(fā)編程實(shí)現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng)

    Go并發(fā)編程實(shí)現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng)

    本文主要介紹了Go并發(fā)編程實(shí)現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Golang操作命令行的幾種方式總結(jié)

    Golang操作命令行的幾種方式總結(jié)

    這篇文章主要介紹了Golang操作命令行的幾種方式總結(jié),文章通過(guò)圍主題思想展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Go語(yǔ)言數(shù)據(jù)類(lèi)型簡(jiǎn)單介紹

    Go語(yǔ)言數(shù)據(jù)類(lèi)型簡(jiǎn)單介紹

    這篇文章主要介紹了Go語(yǔ)言數(shù)據(jù)類(lèi)型簡(jiǎn)單介紹的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • Go?for-range?的?value值地址每次都一樣的原因解析

    Go?for-range?的?value值地址每次都一樣的原因解析

    循環(huán)語(yǔ)句是一種常用的控制結(jié)構(gòu),在?Go?語(yǔ)言中,除了?for?關(guān)鍵字以外,還有一個(gè)?range?關(guān)鍵字,可以使用?for-range?循環(huán)迭代數(shù)組、切片、字符串、map?和?channel?這些數(shù)據(jù)類(lèi)型,這篇文章主要介紹了Go?for-range?的?value值地址每次都一樣的原因解析,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

东港市| 土默特右旗| 阜阳市| 永登县| 喀喇沁旗| 卢湾区| 嘉定区| 潞城市| 江都市| 龙井市| 且末县| 洱源县| 双桥区| 镇江市| 德令哈市| 四川省| 昌乐县| 福建省| 乌拉特后旗| 浦江县| 迁安市| 潮安县| 桦甸市| 尼勒克县| 冕宁县| 乐安县| 大兴区| 襄樊市| 许昌县| 万全县| 栖霞市| 凭祥市| 喀什市| 沁源县| 舞钢市| 绥德县| 邯郸市| 禹州市| 龙陵县| 克拉玛依市| 马鞍山市|