好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Go 使用Unmarshal將json賦給struct出錯的原因及解決

Go 使用Unmarshal將json賦給struct出錯的原因及解決

熱門標簽:寧波語音外呼系統公司 地圖標注免費定制店 上海極信防封電銷卡價格 宿遷便宜外呼系統代理商 鄭州智能語音電銷機器人價格 仙桃400電話辦理 重慶慶云企業400電話到哪申請 不封卡外呼系統 湛江crm外呼系統排名

例如:

將json:

{
 "name": "Laura"
 "age": "18"
}

賦給struct:

type PersonalInfo struct {
 Name string `json:"name"`
 Age string `json:"age"`
}

用語句:

person := PersonalInfo{}
err := json.Unmarshal(json, persona)//json為上面的[]byte

出錯原因:

1、struct中變量名是不可導出的(首寫字母是小寫的),需要把首寫字母改成大寫

2、需要傳輸person的指針

3、struct中json的名字與json中的名字需要一模一樣

補充:Go語言處理JSON之——利用Unmarshal解析json字符串

簡單的解析例子:

首先還是從官方文檔中的例子:

package main
import (
 "fmt"
 "encoding/json"
)
type Animal struct {
 Name string
 Order string
}
func main() {
 var jsonBlob = []byte(`[
 {"Name": "Platypus", "Order": "Monotremata"},
 {"Name": "Quoll", "Order": "Dasyuromorphia"}
 ]`)
 var animals []Animal
 
 err := json.Unmarshal(jsonBlob, animals)
 if err != nil {
  fmt.Println("error:", err)
 }
 fmt.Printf("%+v", animals)
}

輸出:

[{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]

簡單進行修改,修改為:

package main
import (
 "fmt"
 "encoding/json"
)
type Animal struct {
 Name string
 Order string
}
func main() {
 var jsonBlob = []byte(`{"Name": "Platypus", "Order": "Monotremata"}`)
 var animals Animal
 err := json.Unmarshal(jsonBlob, animals)
 if err != nil {
  fmt.Println("error:", err)
 }
 fmt.Printf("%+v", animals)
}

輸出:

{Name:Platypus Order:Monotremata}

還是之前的例子:

解析這樣的一個json字符串:

{
 "first fruit":
 {
  "describe":"an apple",
  "icon":"appleIcon",
  "name":"apple"
 },
 "second fruit":
 {
  "describe":"an orange",
  "icon":"orangeIcon",
  "name":"orange"
 },
 "three fruit array":
 [
  "eat 0",
  "eat 1",
  "eat 2",
  "eat 3",
  "eat 4"
 ]
}

go代碼:

package main
import (
 "fmt"
 "encoding/json"
)
type Fruit struct {
 Describe string `json:"describe"`
 Icon  string `json:"icon"`
 Name  string `json:"name"`
}
type FruitGroup struct {
 FirstFruit *Fruit `json:"first fruit"` //指針,指向引用對象;如果不用指針,只是值復制
 SecondFruit *Fruit `json:"second fruit"` //指針,指向引用對象;如果不用指針,只是值復制
 THreeFruitArray []string `json:"three fruit array"`
}
func main() {
 var jsonBlob = []byte(`{
 "first fruit": {
  "describe": "an apple",
  "icon": "appleIcon",
  "name": "apple"
 },
 "second fruit": {
  "describe": "an orange",
  "icon": "appleIcon",
  "name": "orange"
 },
 "three fruit array": [
  "eat 0",
  "eat 1",
  "eat 2",
  "eat 3"
 ]}`)
 var fruitGroup FruitGroup
 
 err := json.Unmarshal(jsonBlob, fruitGroup)
 if err != nil {
  fmt.Println("error:", err)
 }
 fmt.Printf("%+v\n", fruitGroup)
 fmt.Printf("%+v\n", fruitGroup.FirstFruit)
 fmt.Printf("%+v\n", fruitGroup.SecondFruit)
}

運行結果:

{FirstFruit:0xc00006c5a0 SecondFruit:0xc00006c5d0 THreeFruitArray:[eat 0 eat 1 eat 2 eat 3]}
{Describe:an apple Icon:appleIcon Name:apple}
{Describe:an orange Icon:appleIcon Name:orange}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • react組件中的constructor和super知識點整理
  • MapStruct到底是什么?
  • Go遍歷struct,map,slice的實現
  • golang struct, map, json之間的相互轉換
  • golang 生成對應的數據表struct定義操作
  • Java MapStruct解了對象映射的毒
  • C#調用C類型dll入參為struct的問題詳解
  • Java Structs框架原理案例詳解

標簽:安康 海南 物業服務 遼寧 青海 儋州 西雙版納 電子產品

巨人網絡通訊聲明:本文標題《Go 使用Unmarshal將json賦給struct出錯的原因及解決》,本文關鍵詞  使用,Unmarshal,將,json,賦給,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go 使用Unmarshal將json賦給struct出錯的原因及解決》相關的同類信息!
  • 本頁收集關于Go 使用Unmarshal將json賦給struct出錯的原因及解決的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 被各种姿势c到h调教| 67194国产精品| 国产一级a一片| 我的魅惑小姨子电影| 在线 亚洲 欧美 专区二区| 北岛玲美痴女播放| 男女一边做一边摸爽爽视频| 免费追短剧 全免费| 欧美精产国品一二三产品特点| 肉浦团小说| 好爽毛片一区二区三区色欲| 在线观看 日韩一区| 嗯~啊别揉我奶头秘?视频景甜| 国产香蕉尹人综合在线观| 中文一区二区三区| 好男人资源社区在线播放| 扒美女衣服从腿摸到胸视频| 大吊操| 中文字幕伦理| 偷拍女人换月经巾| 久久亚洲国产精品尤物| 天干天干天夜夜爽啪啪| 国产午夜人成在线视频麻豆| 久草免费在线视频| 少妇一边喂奶一边跟我做| 翁莹情乱第全部篇| 污污网站在线播放| 国产?无码?高潮电影欲动| 男人扒开女人腿桶到爽羞羞漫画 | 1024手机看片人妻A片| 亚洲日本中国韩国欧洲| 色女导航| 色吊丝永久性网址在线观看| 国精产品999国精产品视频| 94久久国产伦免费精品| 我和岳乱妇三级高清电影| 性感美女无遮挡| 亚洲三级网站| 久久精品这里是免费国产| 国产色婷婷免费视频在线69堂| 新视觉6080高清电视剧2024|