溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go的json輸出(序列化)

發(fā)布時間:2020-10-17 13:13:07 來源:網絡 閱讀:2351 作者:ck_god 欄目:編程語言
// code_030_JSON_key_value project main.go
package main

import (
    "encoding/json"
    "fmt"
)

//Go語言內建對JSON的支持。
//使用Go語言內置的encoding/json 標準庫,開發(fā)者可以輕松使用Go程序生成和解析JSON格式的數(shù)據

type IT struct {
    Company  string
    Subjects []string
    IsOk     bool
    Price    float64
}

type University struct {
    //ID         int      //所學專業(yè)的ID
    Name string `json:"-"` //大學名稱
    //Department string   //系
    //Major      string   //專業(yè)
    //SchoolYear int      //學年
    IsFullTime bool     `json:"isFullTime,string"` //是否全日制
    Subjects   []string `json:"subjects"`          //主要學科
    Tuition    float64  `json:"price, omitempty"`  //學費
}

func main() {

    //JSON的輸出(編碼)
    //案例1:json.Marshal的使用
    t1 := IT{"tencent", []string{"develop", "unittest", "production", "operative"}, false, 12000.0}
    b, err := json.Marshal(t1)
    if err != nil {
        fmt.Println("json err:", err)
    }
    fmt.Println(string(b))
    //案例2: json.MarshalIndent的使用,用縮進對輸出進行格式化,效果更加json化
    t2 := IT{"HuaWei", []string{"develop", "unittest", "production", "operative"}, false, 13000.0}
    b2, err := json.MarshalIndent(t2, "", "   ")
    if err != nil {
        fmt.Println("json err:", err)
    }
    fmt.Println(string(b2))
    //案例3:struct tag的使用。--->>> 輸出的時候,顯示為首字母小寫
    //JSON輸出的時候必須注意,只有導出的字段(首字母是大寫)才會被輸出,如果修改字段名,那么就會發(fā)現(xiàn)什么都不會輸出,所以必須通過struct tag定義來實現(xiàn)。
    /*           1)字段的tag是"-",那么這個字段不會輸出到JSON
    ?        2)tag中帶有自定義名稱,那么這個自定義名稱會出現(xiàn)在JSON的字段名中
    ?            3)tag中如果帶有"omitempty"選項,那么如果該字段值為空,就不會輸出到JSON串中
    ?        4)如果字段類型是bool, string, int, int64等,而tag中帶有",string"選項,那么這個字段在輸出到JSON的時候會把該字段對應的值轉換成JSON字符串

    */
    t3 := University{"清華大學", true, []string{"經濟", "法律", "音樂", "美術", "計算機"}, 3000.00}
    b3, err := json.MarshalIndent(t3, "", "   ")
    if err != nil {
        fmt.Println("%v\n", err)
    }
    fmt.Println(string(b3))

    //案例4:通過map生成JSON
    m1 := make(map[string]interface{})
    m1["company"] = "lenovo"
    m1["subjects"] = []string{"dev", "test", "pro"}
    m1["isok"] = true
    m1["salary"] = 15000.00

    b4, err := json.Marshal(m1)
    if err != nil {
        fmt.Println("%v\n", err)
    }
    fmt.Println(string(b4))
}
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI