golang中结构体转成xml格式
本文主要介绍结构体与xml格式的字符串进行相互转换,Go自带xml包,所以进行格式转换非常的方便。
一、结构体转成xml格式
1、转成不需要排版的xml格式字符串,可直接使用Marshal()方法
func Marshal(v interface{}) ([]byte, error)
2、转成可以排版的xml格式,可以使用MarshalIndent()方法
MarshalIndent(v interface{}, prefix, indent string)
参数说明:prefix为前缀(用于所有的标签),indent为字段缩进(用于field)
例:
type RedPacketQueryRequest struct {
MchBillno string `xml:"mch_billno"`
MchId string `xml:"mch_id"`
NonceStr string `xml:"nonce_str"`
Sign string `xml:"sign"`
Appid string `xml:"appid"`
BillType string `xml:"bill_type"`
}
func main() {
redPack:=RedPacketQueryRequest{
MchBillno:"13ffsd",
MchId:"1545441",
NonceStr:"sfds5f4ds54f54s5f4d",
Sign:"DRFFDSF414",
Appid:"wx124334324",
BillType:"fsd",
}
//结构体转成xml格式
if xmlByteData,err:=xml.Marshal(redPack);err==nil{
strData:=string(xmlByteData)
fmt.Println(strData)
//转成xml格式
fmt.Println(strings.Replace(strData,"RedPacketQueryRequest","xml",-1))
//结构体转成xml格式化的格式
if xmlIndentByteData, err2 := xml.MarshalIndent(redPack, "", " "); err2==nil{
strData:=string(xmlIndentByteData)
fmt.Println(strData)
fmt.Println(strings.Replace(strData,"RedPacketQueryRequest","xml",-1))
}
}
//打印结果
1. <RedPacketQueryRequest><mch_billno>13ffsd</mch_billno><mch_id>1545441</mch_id><nonce_str>sfds5f4ds54f54s5f4d</nonce_str><sign>DRFFDSF414</sign><appid>wx124334324</appid><bill_type>fsd</bill_type></RedPacketQueryRequest>
<xml><mch_billno>13ffsd</mch_billno><mch_id>1545441</mch_id><nonce_str>sfds5f4ds54f54s5f4d</nonce_str><sign>DRFFDSF414</sign><appid>wx124334324</appid><bill_type>fsd</bill_type></xml>
2.
<RedPacketQueryRequest>
<mch_billno>13ffsd</mch_billno>
<mch_id>1545441</mch_id>
<nonce_str>sfds5f4ds54f54s5f4d</nonce_str>
<sign>DRFFDSF414</sign>
<appid>wx124334324</appid>
<bill_type>fsd</bill_type>
</RedPacketQueryRequest>
<xml>
<mch_billno>13ffsd</mch_billno>
<mch_id>1545441</mch_id>
<nonce_str>sfds5f4ds54f54s5f4d</nonce_str>
<sign>DRFFDSF414</sign>
<appid>wx124334324</appid>
<bill_type>fsd</bill_type>
</xml>
二、将xml格式的字符串转成结构体
使用方法如下:
Unmarshal(data []byte, v interface{}) error
例:
xmlStr:= `<xml>
<mch_billno>13ffsd</mch_billno>
<mch_id>1545441</mch_id>
<nonce_str>sfds5f4ds54f54s5f4d</nonce_str>
<sign>DRFFDSF414</sign>
<appid>wx124334324</appid>
<bill_type>fsd</bill_type>
</xml>`
redPack2:=RedPacketQueryRequest{}
xml.Unmarshal([]byte(xmlStr),&redPack2)
golang中结构体转成xml格式相关推荐
- C语言——把结构体数据封装成TLV格式的数据
功能描述: typedef struct { unsigned char ucPort; pid_t stPid; }TEST_INFO_S; 结构体TETS_INFO_S内有两个变量 ...
- 如何初始化结构体中的指针结构体_跟我一起学习go语言(五)golang中结构体的初始化方法...
1.自定义一个结构体 type Vertex struct { X, Y float64} 2.初始化方法-指针: rect1 := new(Vertex )rect2 := &Vertex ...
- Golang 入门 : 结构体(struct)
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
- Go语言进阶,结构体与json字符串格式的互相转换
对于结构体大家都很熟悉,是一种自定义类型,可以将不同类型的同属于这个类的属性(成员变量)集合在一起,换句话说这些成员变量属于键值对,那么这种也就是常见的json格式,我们来看下如何将结构体转成json ...
- golang修改结构体中的切片值
golang修改结构体中的切片值,直接传结构体地址就可以 package mainimport "fmt"type rspInfo struct {KeyWords string ...
- golang判断结构体为空_如何在Golang中检查结构是否为空?
golang判断结构体为空 The size of an empty structure is zero in Golang. Here, empty structure means, there i ...
- golang 初始化并赋值_golang 结构体初始化时赋值格式介绍
golang在给结构体赋值初始值时,用:分割k,v值 x := ItemLog{ Id: GetUuid(), ItemId: u.Id, UsrId: "123", Name: ...
- Go语言中结构体打Tag是什么意思?
前言 哈喽,大家好,我是asong.今天想与大家分享Go语言中结构体标签是怎么使用的,以及怎样定制自己的结构体标签解析. 大多数初学者在看公司的项目代码时,看到的一些结构体定义会是这样的: type ...
- Go语言中结构体打 Tag 是什么意思?
前言 哈喽,大家好,我是asong.今天想与大家分享Go语言中结构体标签是怎么使用的,以及怎样定制自己的结构体标签解析. 大多数初学者在看公司的项目代码时,看到的一些结构体定义会是这样的: type ...
最新文章
- easyUI样式之easyui-switchbutton
- [Google API](4)搜索结果
- array_map与array_column之间的关系
- python之路_django路由配置及模板
- C++中的指针特征操作符重载
- How Spring Boot Autoconfiguration Magic Works--转
- mysql order by 日期_mysql order by基于时间的盲注
- python位置参数_Python;argparse;如何指定位置参数的位置
- MFC多文档应用程序同时显示两个视图
- 楚留香手游服务器维护,【楚留香手游】4.27日游戏维护公告
- LeetCode 138 复制带随机指针的链表
- Log4j(二)—— Log4j基本使用方法
- 论文精读|VRCNet:变分关联点云补全网络(CVPR2021)
- 啥是认知智能? 认知智能和人工智能到底有啥区别? 你知道吗? 道翰天琼认知智能。
- mybatis源码(一)
- 摘要-The Inventor Mentor
- SaaS模式、技术与案例详解——第16章 SaaS模式可行性分析
- Lua开发--lua变量
- 如何将QQ音乐SQ品质FLAC格式转换成MP3音乐
- AudioRecord获取分贝值