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)
    
    
}

猜你喜欢

转载自blog.csdn.net/u013235495/article/details/80535703