golang中json的使用

2018年2月28日 发表评论 阅读评论

一、Unmarshal和Marshal方法

golang中使用json,经常会使用到两个函数Unmarshal和Marshal,前者用于将json数据反序列化为其他数据,后者用于将struct、map、slice序列化为json数据。

1、Unmarshal方法

func Unmarshal(data []byte, v interface{}) error
将json反序列化成struct对象
将json 反序列化到map中
将json反序列化到slice中

2、Marshal方法

func Marshal(v interface{}) ([]byte, error)
将struct对象序列化成json
将map序列化成json
将slice序列化成json

二、使用示例

package main
import (
       "fmt"
       "encoding/json"
)
type User struct {
        Username string
        Password string
        FriendName []string
}
func main() {
         user:=User{}
         user.Username="Tom"
         user.Password="123456"
         user.FriendName=[]string{"Li","Fei"}
       //将struct转成json字符串,注意:结构体中的字段首字母必须大写,否则无法解析
       if userJSON,err:=json.Marshal(user);err==nil{
             fmt.Println(string(userJSON))   //打印结果:{"Username":"Tom","Password":"123456","FriendName":["Li","Fei"]}
        }
        //将slice转成json字符串
        arr:=[]string{"Apple","Orange","Banana"}
       if arrJSON,err:=json.Marshal(arr);err==nil{
               fmt.Println(string(arrJSON))  //打印结果:["Apple","Orange","Banana"]
        }
        //将map转成json字符串
         m:=map[string]string{"浙江":"杭州","湖南":"长沙"}
         if mJSON,err:=json.Marshal(m);err==nil{
                fmt.Println(string(mJSON))   //打印结果:{"浙江":"杭州","湖南":"长沙"} }
         //json转成struct        jsonStr:=`{"Username":"Tom","Password":"123456","FriendName":["Li","Fei"]}`
         var userJSON User
         if err:=json.Unmarshal([]byte(jsonStr),&userJSON);err==nil{
                   fmt.Println(userJSON)   //打印结果:{Tom 123456 [Li Fei]}
         }
         //json转成slice
         jsonFruit:=`["Apple","Orange","Banana"]`
         var arrFruit  []string
         if err:=json.Unmarshal([]byte(jsonFruit),&arrFruit);err==nil{
               fmt.Println(arrFruit)   //打印结果:[Apple Orange Banana]
          }
         //json转成map
         jsonCity:=`{"浙江":"杭州","湖南":"长沙"}`
         var mapCity map[string]string
         if err:=json.Unmarshal([]byte(jsonCity),&mapCity);err==nil{
                  fmt.Println(mapCity)  //打印结果: map[浙江:杭州 湖南:长沙]
         }
}

参考页面:gobyexample之json应用 




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way