欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語言轉(zhuǎn)換json字符串為json數(shù)據(jù)的實(shí)現(xiàn)

 更新時間:2025年03月05日 09:52:50   作者:絳洞花主敏明  
本文主要介紹了go語言轉(zhuǎn)換json字符串為json數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在 Go 語言中,可以使用標(biāo)準(zhǔn)庫 encoding/json 中的 json.Unmarshal 函數(shù)將 JSON 字符串轉(zhuǎn)換為 JSON 數(shù)據(jù)(通常是 Go 中的結(jié)構(gòu)體或 map 類型)。以下是一個簡單的示例:

示例代碼

package main

import (
	"encoding/json"
	"fmt"
	"log"
)

// 定義一個結(jié)構(gòu)體,用于映射 JSON 數(shù)據(jù)
type Person struct {
	Name    string `json:"name"`
	Age     int    `json:"age"`
	Hobbies []string `json:"hobbies"`
}

func main() {
	// JSON 字符串
	jsonStr := `{
		"name": "John",
		"age": 30,
		"hobbies": ["reading", "coding"]
	}`

	// 創(chuàng)建一個結(jié)構(gòu)體變量用于存儲解析后的數(shù)據(jù)
	var person Person

	// 將 JSON 字符串解析為結(jié)構(gòu)體
	err := json.Unmarshal([]byte(jsonStr), &person)
	if err != nil {
		log.Fatalf("Error unmarshalling JSON: %v", err)
	}

	// 打印解析后的數(shù)據(jù)
	fmt.Printf("Name: %s\n", person.Name)
	fmt.Printf("Age: %d\n", person.Age)
	fmt.Printf("Hobbies: %v\n", person.Hobbies)
}

代碼說明

  • 定義結(jié)構(gòu)體

    • 使用 struct 定義一個與 JSON 數(shù)據(jù)結(jié)構(gòu)對應(yīng)的 Go 結(jié)構(gòu)體。
    • 使用 json:"key" 標(biāo)簽來指定 JSON 中的鍵與結(jié)構(gòu)體字段的映射關(guān)系。
  • json.Unmarshal 函數(shù)

    • json.Unmarshal(data []byte, v interface{}) error
      • data 是 JSON 字符串的字節(jié)切片。
      • v 是目標(biāo)變量,用于存儲解析后的數(shù)據(jù)。
      • 如果解析成功,v 中會包含 JSON 數(shù)據(jù);如果失敗,會返回錯誤。
  • 錯誤處理

    • 如果 JSON 格式錯誤或結(jié)構(gòu)體字段不匹配,json.Unmarshal 會返回錯誤。

輸出結(jié)果

運(yùn)行上述代碼后,輸出如下:

Name: John
Age: 30
Hobbies: [reading coding]

使用 map 解析 JSON

如果 JSON 結(jié)構(gòu)不固定,也可以使用 map[string]interface{} 來解析 JSON 數(shù)據(jù),示例如下:

package main

import (
	"encoding/json"
	"fmt"
	"log"
)

func main() {
	jsonStr := `{
		"name": "John",
		"age": 30,
		"hobbies": ["reading", "coding"]
	}`

	// 使用 map 存儲解析后的數(shù)據(jù)
	var data map[string]interface{}

	// 解析 JSON
	err := json.Unmarshal([]byte(jsonStr), &data)
	if err != nil {
		log.Fatalf("Error unmarshalling JSON: %v", err)
	}

	// 訪問 map 中的數(shù)據(jù)
	fmt.Printf("Name: %v\n", data["name"])
	fmt.Printf("Age: %v\n", data["age"])
	fmt.Printf("Hobbies: %v\n", data["hobbies"])
}

這種方式更加靈活,但需要通過類型斷言來訪問具體字段的值。

到此這篇關(guān)于go語言轉(zhuǎn)換json字符串為json數(shù)據(jù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go 字符串轉(zhuǎn)換為json數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析

    Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析

    這篇文章主要為大家介紹了Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Golang中g(shù)orm無法將字段更新為空值

    Golang中g(shù)orm無法將字段更新為空值

    本文主要介紹了Golang中g(shù)orm無法將字段更新為空值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • golang使用mapstructure解析json

    golang使用mapstructure解析json

    mapstructure?是一個?Go?庫,用于將通用映射值解碼為結(jié)構(gòu),這篇文章主要來和大家介紹一下golang如何使用mapstructure解析json,需要的可以參考下
    2023-12-12
  • go?install和go?get的區(qū)別實(shí)例詳解

    go?install和go?get的區(qū)別實(shí)例詳解

    go install是Golang用來編譯和安裝自定義package的工具,下面這篇文章主要給大家介紹了關(guān)于go?install和go?get區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 超詳細(xì)Go語言中JSON處理技巧分享

    超詳細(xì)Go語言中JSON處理技巧分享

    這篇文章主要為大家總結(jié)了go語言中對JSON數(shù)據(jù)結(jié)構(gòu)和結(jié)構(gòu)體之間相互轉(zhuǎn)換問題及解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • Go 常量基礎(chǔ)概念(聲明更改只讀)

    Go 常量基礎(chǔ)概念(聲明更改只讀)

    這篇文章主要為大家介紹了Go常量基礎(chǔ)概念包括常量的聲明更改只讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 一文探索Go中的函數(shù)使用方式

    一文探索Go中的函數(shù)使用方式

    在編程中,函數(shù)是基本構(gòu)建塊之一,Go語言以其簡潔明了的函數(shù)定義和調(diào)用語法而聞名,所以本文就來和大家聊聊Go中的函數(shù)概念及使用,感興趣的可以了解下
    2023-09-09
  • Go定時器的三種實(shí)現(xiàn)方式示例詳解

    Go定時器的三種實(shí)現(xiàn)方式示例詳解

    這篇文章主要為大家介紹了Go定時器的三種實(shí)現(xiàn)方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 解決老版本goland無法調(diào)試新版本go的問題

    解決老版本goland無法調(diào)試新版本go的問題

    這篇文章主要給大家介紹了如何解決老版本goland無法調(diào)試新版本go的問題,文中通過代碼示例給大家講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • 實(shí)現(xiàn)像php一樣方便的go ORM數(shù)據(jù)庫操作示例詳解

    實(shí)現(xiàn)像php一樣方便的go ORM數(shù)據(jù)庫操作示例詳解

    這篇文章主要為大家介紹了實(shí)現(xiàn)像php一樣方便的go ORM數(shù)據(jù)庫操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論