Go語言提供了json和xml兩種格式的解析和轉換接口,方便我們在處理數(shù)據(jù)的過程中進行格式轉換。下面分別介紹這兩種格式的轉換方法。
json轉換
Go語言中使用encoding/json包來進行json格式的轉換。其中最常用的是json.Marshal和json.Unmarshal兩個函數(shù)。
下面是一個示例:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"address,omitempty"` } func main() { p1 := Person{Name: "Tom", Age: 20} jsonStr, err := json.MarshalIndent(p1, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(jsonStr)) var p2 Person err = json.Unmarshal(jsonStr, &p2) if err != nil { fmt.Println(err) return } fmt.Println(p2) }
運行結果:
{ "name": "Tom", "age": 20 } {Name:Tom Age:20 Address:}
解析:
上面的代碼定義了一個Person結構體,包含姓名,年齡和地址三個字段。使用json.Marshal將一個Person結構體轉換為json字符串,并通過json.Unmarshal將json字符串解析為一個Person結構體對象。
xml轉換
Go語言中使用encoding/xml包來進行xml格式的轉換。其中最常用的是xml.Marshal和xml.Unmarshal兩個函數(shù)。
下面是一個示例:
package main import ( "encoding/xml" "fmt" ) type Person struct { Name string `xml:"name"` Age int `xml:"age"` Address string `xml:"address,omitempty"` } func main() { p1 := Person{Name: "Tom", Age: 20} xmlStr, err := xml.MarshalIndent(p1, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(xmlStr)) var p2 Person err = xml.Unmarshal(xmlStr, &p2) if err != nil { fmt.Println(err) return } fmt.Println(p2) }
運行結果:
<Person> <name>Tom</name> <age>20</age> </Person> {Name:Tom Age:20 Address:}
解析:
上面的代碼定義了一個Person結構體,包含姓名,年齡和地址三個字段。使用xml.Marshal將一個Person結構體轉換為xml字符串,并通過xml.Unmarshal將xml字符串解析為一個Person結構體對象。
上一篇go自定義json
下一篇go直接解析json