国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Golang 如何解析和生成json

瀏覽:93日期:2024-05-30 14:57:20

JSON(Javascript Object Notation)是一種輕量級的數據交換語言,以文字為基礎,具有自我描述性且易于讓人閱讀。盡管JSON是JavaScript的一個子集,但JSON是獨立于語言的文本格式,并且采用了類似于C語言家族的一些習慣。JSON與XML最大的不同在于XML是一個完整的標記語言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及瀏覽器的?冉?燜俳馕鮒С鄭?溝悶涓?視糜諭?縭?荽?淞煊頡?/p>

Golang自帶的JSON解析庫encoding/json,可以用起將結構化數據序列化成json字符串或從json字符串中解析出我們想要的數據。

1.解析json

給一個較為復雜的json字符串,包含數組,數組的元素是json對象。我們需要取出數組第一個元素中的某一個字段值。其它的解析均可參考下面的代碼。

package mainimport ( 'encoding/json' 'fmt')func main() { jsonStr := []byte(`{'uin':1589276509,'feedID':10000,'videos':[{'picture':'http://qqpublic.qpic.cn/avatar.jpg','duration':'839'}]}`) var jsonMap map[string]interface{} if err := json.Unmarshal(jsonStr, &jsonMap); err!=nil { fmt.Printf('json decode failed, err=%v', err) return } value, ok:=jsonMap['videos'] fmt.Printf('value=%#vn', value) if ok {sliceValue, ok := value.([]interface{})if ok { mapValue, ok := sliceValue[0].(map[string]interface{}) if ok {duration, ok := mapValue['duration']if ok { fmt.Printf('d=%v,type=%Tn',duration,duration)} }} }}

程序輸出:

value=[]interface {}{map[string]interface {}{'picture':'http://qqpublic.qpic.cn/avatar.jpg', 'duration':'839'}}d=839,type=string

解析json字符串時,需要注意如下幾點:(1)Go類型和JSON類型的對應關系如下:

map[string]interface{}代表JSON對象[]interface{}代表JSON數組bool代表JSON booleansfloat64代表JSON numbersstring代表JSON stringsnil 代表JSON null

2.生成json

假設我們有如下一個類(結構體)student 及其一個實例對象st,將其序列化為json,具體實現如下:

package mainimport ( 'encoding/json' 'fmt')type Stu struct { Name string `json:'name'` Age int sex string Class *Class `json:'class'`}type Class struct { Name string Grade int}func main() {//實例化一個數據結構,用于生成json字符串 stu := Stu{ Name: '張三', Age: 18, sex: '男', } //指針變量 cla := new(Class) cla.Name = '1班' cla.Grade = 3 stu.Class=cla //Marshal失敗時err!=nil jsonStu, err := json.Marshal(stu) if err != nil { fmt.Println('生成json字符串錯誤') } //jsonStu是[]byte類型,轉化成string類型便于查看 fmt.Println(string(jsonStu))}

程序輸出結果:

{'name':'張三','Age':18,'class':{'Name':'1班','Grade':3}}

閱讀以上代碼可以看出:

(1)只要是可導出成員(變量首字母大寫),都可以轉成json。因成員變量sex是不可導出的,故無法轉成json;

(2)如果變量打上了json標簽,如Name旁邊的 json:'name' ,那么轉化成的json key就用該標簽“name”,否則取字段名作為key,如'Age';

(3)指針變量,編碼時自動轉換為它所指向的值,如Class變量;

(4)強調一句,序列化成功后的json字符串是純粹的字符串。

以上就是Golang 如何解析和生成json的詳細內容,更多關于golang 解析、生成json的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 日韩 国产 欧美视频一区二区三区 | 欧美在线成人免费国产 | 99久久国产综合精品2020 | 免费视频 久久久 | 三级韩国一区久久二区综合 | 欧美一区二区三区在观看 | 亚洲国产精品一区二区三区久久 | 午夜大片免费男女爽爽影院久久 | a级毛片免费在线观看 | 欧美男女网站 | 在线日本看片免费人成视久网 | 日本天堂视频在线观看 | 欧美大片在线播放 | 国产精品久久久久久爽爽爽 | 一级在线 | 欧洲 | 中文字幕一区二区三区精彩视频 | 黄色影院在线观看视频 | 日韩欧美精品在线视频 | 日韩欧美在线视频 | 免费一区二区三区 | 国产成人综合在线视频 | 亚洲碰碰 | 亚洲爽爽 | 日本特一级毛片免费视频 | 九九国产在线视频 | 国产精品精品国产一区二区 | 全部精品孕妇色视频在线 | 多人伦精品一区二区三区视频 | 国产欧美一区二区三区沐欲 | 色偷偷亚洲男人天堂 | 日本精品久久久久中文字幕 1 | 欧美一级别 | 欧美日韩精品一区二区三区不卡 | 欧美亚洲日本国产综合网 | 亚洲第一男人天堂 | 精品国产91久久久久久久a | 欧美白人最猛性xxxxx | 欧美曰韩一区二区三区 | 中文字幕99在线精品视频免费看 | 久久精品久久精品 | 久久久久久久久一级毛片 |