简述Json

Json是一种轻量级的数据交换格式。通俗的说,在我们许多项目中,前后端之间的数据通信格式就是Json。
后端在取到数据对数据进行加工之后,将此数据json.Marshal一下,也就是将此数据转为Json格式,然后将此Json格式的数据返回给前端,前端拿到Json之后会进行json.UnMarshal,也就是将Json文件转为原来的数据。然后经过一系列操作渲染到页面上。

这里写了一段代码来演示一下以上这个过程(Go语言):

package main

import (
    "fmt"
    "encoding/json"
)

type Student struct {
    Name    string
    Age        int
    Guake    bool
    Classes    []string
    Price    float32
}

func (s * Student)ShowStu() {
    fmt.Println("show Student :")
    fmt.Println("\tName\t:", s.Name)
    fmt.Println("\tAge\t:", s.Age)
    fmt.Println("\tGuake\t:", s.Guake)
    fmt.Println("\tPrice\t:", s.Price)
    fmt.Printf("\tClasses\t: ")
    for _, a := range s.Classes {
        fmt.Printf("%s ", a)
    }
    fmt.Println("")
}

func main() {
    st := &Student {
        "Xiao Ming",
        16,
        true,
        []string{"Math", "English", "Chinese"},
        9.99,
    }
    fmt.Println("before JSON encoding :")
    st.ShowStu()

    b, err := json.Marshal(st)
    if err != nil {
        fmt.Println("encoding faild")
    } else {
        fmt.Println("encoded data : ")
        fmt.Println(b)
        fmt.Println(string(b))
    }
    ch := make(chan string, 1)
    go func(c chan string, str string){
        c <- str
    }(ch, string(b))
    strData := <-ch
    fmt.Println("--------------------------------")
    stb := &Student{}
    stb.ShowStu()
    err = json.Unmarshal([]byte(strData), &stb)
    if err != nil {
        fmt.Println("Unmarshal faild")
    } else {
        fmt.Println("Unmarshal success")
        stb.ShowStu()
    }
}

代码运行结果如下:

刚开始我觉得特别奇怪的是在结构体转为Json格式之后,应该是打印出来Json格式的数据,但是为什么是那一行数字,并且只有字符串化之后才能显示出是Json格式的数据。
后来才发现,字节数组其实就是下面Json格式数据的ASII码,123就是{ ,34就是” 。
字符串化就将字节数组里的ASII码以字符的形式打印出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值