1. 程式人生 > >golang將結構體轉換成json,json轉換成結構體

golang將結構體轉換成json,json轉換成結構體

1、將結構體轉換成json需要用到marshl函式(或者marshlIndent()函式)。

區別:marshl函式沒有將json格式化輸出,輸出是一個json的字串。----不利於直接檢視json的結構。maeshldent函式

可以將json格式化輸出,可閱讀性提高了。

2、將json字串轉換成結構體需要用到marshl()函式。

例項如下:


package main


import (     
"log"      "encoding/json"      "fmt" )

type Movie struct {     Title string     Year
int `json:"released"`     Color bool `json:"color, omitempty"`     Actors [] string }
func main (){     
var movies = []Movie{         {Title: "Casabanca" , Year: 1942 , Color: false ,             Actors:[] string { "Humphrey Bogart" , "Ingrid Bergman" }},         {Title: "Casabanca2" , Year: 1962 , Color: true ,             Actors:[] string { "Humphrey Paul" }},     }
     data , err := json. Marshal (movies)      if err != nil {         log. Fatalf ( "Json marshaling failed:%s" , err)     }     fmt. Printf ( "%s \n " , data)      var movies2 [] struct {Title string }      // movies2 := make([]Movie, 10)      if err3 := json. Unmarshal (data, & movies2); err3 != nil {         log. Fatalf ( "JSON unmarshling failed: %s" , err)     }     fmt. Println ( "*****************" , movies2)      data2 , err2 := json. MarshalIndent (movies, "" , " " )      if err2 != nil {         log. Fatalf ( "Json marshlindent failed:%s" , err)     }     fmt. Printf ( "%s \n " , data2)           }

package main
import (      "log"      "encoding/json"      "fmt" )

type Movie struct {     Title string     Year int `json:"released"`     Color bool `json:"color, omitempty"`     Actors [] string }
func main (){      var movies = []Movie{         {Title: "Casabanca" , Year: 1942 , Color: false ,             Actors:[] string { "Humphrey Bogart" , "Ingrid Bergman" }},         {Title: "Casabanca2" , Year: 1962 , Color: true ,             Actors:[] string { "Humphrey Paul" }},     }
     data , err := json. Marshal (movies)      if err != nil {         log. Fatalf ( "Json marshaling failed:%s" , err)     }     fmt. Printf ( "%s \n " , data)      var movies2 [] struct {Title string }      // movies2 := make([]Movie, 10)      if err3 := json. Unmarshal (data, & movies2); err3 != nil {         log. Fatalf ( "JSON unmarshling failed: %s" , err)     }     fmt. Println ( "*****************" , movies2)      data2 , err2 := json. MarshalIndent (movies, "" , " " )      if err2 != nil {         log. Fatalf ( "Json marshlindent failed:%s" , err)     }     fmt. Printf ( "%s \n " , data2)           }