日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go-json 实例

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go-json 实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境: Win7_x64 + go1.6.2?


package mainimport "encoding/json" import "fmt" import "os"// 我們使用兩個結構體來演示自定義數據類型的JSON數據編碼和解碼。 type Response1 struct {Page intFruits []string } type Response2 struct {Page int `json:"page"`Fruits []string `json:"fruits"` }func main() {// 首先我們看一下將基礎數據類型編碼為JSON數據bolB, _ := json.Marshal(true)fmt.Println(string(bolB))intB, _ := json.Marshal(1)fmt.Println(string(intB))fltB, _ := json.Marshal(2.34)fmt.Println(string(fltB))strB, _ := json.Marshal("gopher")fmt.Println(string(strB))// 這里是將切片和字典編碼為JSON數組或對象slcD := []string{"apple", "peach", "pear"}slcB, _ := json.Marshal(slcD)fmt.Println(string(slcB))mapD := map[string]int{"apple": 5, "lettuce": 7}mapB, _ := json.Marshal(mapD)fmt.Println(string(mapB))// JSON包可以自動地編碼自定義數據類型。結果將只包括自定義// 類型中的可導出成員的值并且默認情況下,這些成員名稱都作// 為JSON數據的鍵res1D := &Response1{Page: 1,Fruits: []string{"apple", "peach", "pear"}}res1B, _ := json.Marshal(res1D)fmt.Println(string(res1B))// 你可以使用tag來自定義編碼后JSON鍵的名稱res2D := &Response2{Page: 1,Fruits: []string{"apple", "peach", "pear"}}res2B, _ := json.Marshal(res2D)fmt.Println(string(res2B))// 現在我們看看解碼JSON數據為Go數值byt := []byte(`{"num":6.13,"strs":["a","b"]}`)// 我們需要提供一個變量來存儲解碼后的JSON數據,這里// 的`map[string]interface{}`將以Key-Value的方式// 保存解碼后的數據,Value可以為任意數據類型var dat map[string]interface{}// 解碼過程,并檢測相關可能存在的錯誤if err := json.Unmarshal(byt, &dat); err != nil {panic(err)}fmt.Println(dat)// 為了使用解碼后map里面的數據,我們需要將Value轉換為// 它們合適的類型,例如我們將這里的num轉換為期望的float64num := dat["num"].(float64)fmt.Println(num)// 訪問嵌套的數據需要一些類型轉換strs := dat["strs"].([]interface{})str1 := strs[0].(string)fmt.Println(str1)// 我們還可以將JSON解碼為自定義數據類型,這有個好處是可以// 為我們的程序增加額外的類型安全并且不用再在訪問數據的時候// 進行類型斷言str := `{"page": 1, "fruits": ["apple", "peach"]}`res := &Response2{}json.Unmarshal([]byte(str), &res)fmt.Println(res)fmt.Println(res.Fruits[0])// 上面的例子中,我們使用bytes和strings來進行原始數據和JSON數據// 之間的轉換,我們也可以直接將JSON編碼的數據流寫入`os.Writer`// 或者是HTTP請求回復數據。enc := json.NewEncoder(os.Stdout)d := map[string]int{"apple": 5, "lettuce": 7}enc.Encode(d) }


運行結果:

E:\program\go\src\hw>go run h1.go hello {"Name":"Alice","Body":"Hello","Time":23} <nil>E:\program\go\src\hw>go run h1.go true 1 2.34 "gopher" ["apple","peach","pear"] {"apple":5,"lettuce":7} {"Page":1,"Fruits":["apple","peach","pear"]} {"page":1,"fruits":["apple","peach","pear"]} map[num:6.13 strs:[a b]] 6.13 a &{1 [apple peach]} apple {"apple":5,"lettuce":7}


總結

以上是生活随笔為你收集整理的Go-json 实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。