golang中json格式有大小写要求,json中小写键名会无法导出,结构体小写也无法导出json对应键名。
就像这样(撸代码):
package main
import(
"fmt"
"encoding/json"
)
type js struct{
name string
}
func main(){
j_:=js{name:"li"}
k,_:=json.Marshal(j_)//已经把j转化为json流了
fmt.Println(k)//nil
}
but
golang当然有考虑到这一点:
在结构体字段后加标签可以处理大小写问题:
package main
import(
"fmt"
"encoding/json"
)
type js struct{
Name string `json:"name"`
}
func main(){
j_:=js{name:"li"}
k,_:=json.Marshal(j_)//已经把j转化为json流了
fmt.Println(k)//[123 34 110 97 109 101 34 58 34 108 105 34 125]
}
反之,json流转化为结构体也不用担心大小写了。具体原理应该是golang通过反射拿到了tag然后转换,作为一种golang自身设计与json标准的一种衔接吧。
阅读(3337) | 评论(0) | 转发(0) |