go json函数的使用

Golang piniu 1294浏览 0评论

1. 使用Marshal函数对各种类型数据转换为json

package main

import (
    "encoding/json"
    "fmt"
    "os"
)
//自定义结构体
type response1 struct {
    Page   int
    Fruits []string
}
//自定义结构体,并指定tag
type response2 struct {
    Page   int      `json:"page"`
    Fruits []string `json:"fruits"`
}

func main() {

    //1.bool
    bolB, _ := json.Marshal(true)
    fmt.Println(string(bolB)) // true

    //2.int
    intB, _ := json.Marshal(1)
    fmt.Println(string(intB)) // 1

    //3.float
    fltB, _ := json.Marshal(2.34)
    fmt.Println(string(fltB)) // 2.34

    //4.str
    strB, _ := json.Marshal("gopher")
    fmt.Println(string(strB)) // "gopher"

    //5.slice
    slcD := []string{"apple", "peach", "pear"}
    slcB, _ := json.Marshal(slcD)
    fmt.Println(string(slcB)) //["apple","peach","pear"]

    //6.map
    mapD := map[string]int{"apple": 5, "lettuce": 7}
    mapB, _ := json.Marshal(mapD)
    fmt.Println(string(mapB)) //{"apple":5,"lettuce":7}

    //7.对结构体response1的使用
    res1D := &response1{
        Page:   1,
	Fruits: []string{"apple", "peach", "pear"},
    }
    res1B, _ := json.Marshal(res1D)
    fmt.Println(string(res1B)) //{"Page":1,"Fruits":["apple","peach","pear"]}

    //8.对结构体response2的使用
    res2D := &response2{
        Page:   1,
	Fruits: []string{"apple", "peach", "pear"},
    }
    res2B, _ := json.Marshal(res2D)
    fmt.Println(string(res2B)) // {"page":1,"fruits":["apple","peach","pear"]}

}

2.使用Unmarshal函数对json字符串的转换为map或struct

package main

import (
    "encoding/json"
    "fmt"
)

type response2 struct {
    Page   int      `json:"page"`
    Fruits []string `json:"fruits"`
}

func main() {

    //1.将json字符串转为map
    byt := []byte(`{"num":6.13,"strs":["a","b"]}`)

    var dat map[string]interface{}

    if err := json.Unmarshal(byt, &dat); err != nil {
        panic(err)
    }
    fmt.Println(dat) //map[num:6.13 strs:[a b]]
	
    //1.1取出map中的值
    num := dat["num"].(float64)
    fmt.Println(num) //6.13

    //1.2取出map中的值
    strs := dat["strs"].([]interface{})
    str1 := strs[0].(string)
    fmt.Println(str1) //a

    //2.将json字符串转为struct
    str := `{"page": 1, "fruits": ["apple", "peach"]}`
    res := response2{}
    json.Unmarshal([]byte(str), &res)
    fmt.Println(res) //{1 [apple peach]}
    fmt.Println(res.Fruits[0]) //apple

}

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: