首页>>后端>>Golang->golang常用库

golang常用库

时间:2023-11-30 本站 点击:0

json/xml

json

json可以和map、struct、interface相互转换

//将struct、map转换成json字符串json.Marshal(struct|map)//将json字符串转换成Person结构体typePersonstruct{...}jsonStr:=[]byte(`{"age":"18","name":"123.com","marry":false}`)varpPersonjson.Unmarshal(jsonStr,&p)

弱类型的js、php可以随时动态自由的转换json字符串,这个确实舒服太多,怪不得php开发者总说数组强大。

xml

与json包的方法是一样,只是数据源不一样

xml.Marshal(struct|map)xml.Unmarshal(xmlStr,&p)

msgpack

MSGPack是二进制的json,性能更快,更省空间

需要安装第三方包:go get -u github.com/vmihailenco/msgpack

msgpack.Marshal(struct|map)msgpack.Unmarshal(msgpackbinary,&p)

很多时候,我们可能遇到这样的场景,就是远端返回的JSON数据不是你想要的类型,或者你想做额外的操作,比如在解析的过程中进行校验,或者类型转换,那么我们可以这样或者在解析过程中进行数据转换

packagemainimport("bytes""encoding/json""fmt")//Mail_typeMailstruct{Valuestring}//UnmarshalJSON_func(m*Mail)UnmarshalJSON(data[]byte)error{//这里简单演示一下,简单判断即可ifbytes.Contains(data,[]byte("@")){returnfmt.Errorf("mailformaterror")}m.Value=string(data)returnnil}//UnmarshalJSON_func(m*Mail)MarshalJSON()(data[]byte,errerror){ifm!=nil{data=[]byte(m.Value)}return}//Phone_typePhonestruct{Valuestring}//UnmarshalJSON_func(p*Phone)UnmarshalJSON(data[]byte)error{//这里简单演示一下,简单判断即可iflen(data)!=11{returnfmt.Errorf("phoneformaterror")}p.Value=string(data)returnnil}//UnmarshalJSON_func(p*Phone)MarshalJSON()(data[]byte,errerror){ifp!=nil{data=[]byte(p.Value)}return}//UserRequest_typeUserRequeststruct{NamestringMailMailPhonePhone}funcmain(){user:=UserRequest{}user.Name="zhangsan"user.Mail.Value="zhangsan@x.com"user.Phone.Value="12345678"fmt.Println(json.Marshal(user))}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Golang/4579.html