婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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出錯的原因及解決的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 凤台县| 黑龙江省| 蒙阴县| 松滋市| 宁明县| 建阳市| 治县。| 长宁县| 梧州市| 固原市| 宣威市| 石家庄市| 南和县| 宁晋县| 元阳县| 洪湖市| 托克逊县| 中宁县| 卓资县| 桐庐县| 茌平县| 浑源县| 石阡县| 巴林右旗| 南漳县| 西乡县| 东乌珠穆沁旗| 青海省| 吴旗县| 文水县| 广宗县| 舟曲县| 宝应县| 电白县| 新兴县| 宁海县| 交城县| 始兴县| 湘潭市| 乌恰县| 建始县|