栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golang结构体和Json格式数据之间的转换

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang结构体和Json格式数据之间的转换

摘要

本节主要学习Golang结构体和JSON序列化数据的转换命令。

1. 结构体到json格式 1.1 简单转换

Golang结构体转换成JSON格式数据,主要在结构体的相关字段中加入json : "keyword"字段。具体做法如下:

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

相关具体实例如下:

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 递归转换

为了转换一个嵌套结构体为JSON格式文件,首先在需要转换的结构体中构建json:"keyword"字段,其次,构建一个嵌套的Golang结构体,最后利用Json.Marshal函数进行转换。

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格式到结构体 2.1 简单转换

JSON格式数据转换为Golang结构体的过程,利用Json.Ummarshal函数进行转换,具体转换例子如下:

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格式数据转换

类似于嵌套结构体转换到JSON格式的过程,从JSON格式数据转换到嵌套结构体数据的过程,就是首先构建嵌套JSON格式数据,其次通过Json.Ummarshal函数转换为嵌套结构体数据。

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格式数据和Golang结构体之间的数据转换过程。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号