golang將結構體轉換成json,json轉換成結構體
阿新 • • 發佈:2018-12-17
1、將結構體轉換成json需要用到marshl函式(或者marshlIndent()函式)。
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) }
區別:marshl函式沒有將json格式化輸出,輸出是一個json的字串。----不利於直接檢視json的結構。maeshldent函式
可以將json格式化輸出,可閱讀性提高了。
2、將json字串轉換成結構體需要用到marshl()函式。
例項如下:
package main
import (
type Movie struct { Title string Year
func main (){
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) }