」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Go 中存取深度嵌套的 JSON 鍵和值?

如何在 Go 中存取深度嵌套的 JSON 鍵和值?

發佈於2024-11-08
瀏覽:490

How to Access Deeply Nested JSON Keys and Values in Go?

在Go 中存取深度嵌套的JSON 鍵和值

使用複雜的JSON 資料結構時,擷取深度嵌套的值可能具有挑戰性單獨使用標準Go 介面。為了克服這個問題,請考慮使用 go-simplejson 套件 (github.com/bitly/go-simplejson)。

該套件提供了一個易於使用的 API,用於透過簡單的語法導航 JSON 資料。以下是如何使用 go-simplejson 存取給定 JSON 中的「時間」值:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/bitly/go-simplejson"
)

func main() {
    msg := `{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}`
    jsonBytes := []byte(msg)
    js, err := simplejson.NewJson(jsonBytes)
    if err != nil {
        fmt.Println(err)
        return
    }

    // Retrieve "time" values
    timeValue, err := js.Get("args").GetIndex(0).Get("time").String()
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Retrieved time:", timeValue)
}

透過使用 go-simplejson,您可以輕鬆遍歷嵌套的 JSON 結構並使用 Get、GetIndex 和 String 等方法檢索值。

對於複雜的資料結構,您也可以定義自己的自己的型別結構來表示 JSON 資料。例如,您可以建立下列結構:

type TimeInfo struct {
    Time string
}

type DataStruct struct {
    Name string
    Args []TimeInfo
}

要將 JSON 解組到此結構中,可以使用以下程式碼:

var dataStruct DataStruct
err = json.Unmarshal(jsonBytes, &dataStruct)
if err != nil {
    fmt.Println(err)
    return
}

此方法提供了一種更結構化的方式來表示 JSON 數據,使其更易於使用和維護。

最新教學 更多>
  • 如何取得 Openpyxl 中單元格的原始值,即使它包含公式?
    如何取得 Openpyxl 中單元格的原始值,即使它包含公式?
    如何在Openpyxl 中擷取實際儲存格值使用openpyxl 存取Excel 中的儲存格值時,您可能會遇到顯示的值與儲存在Openpyxl中的實際值之間的差異單元格(如果單元格包含公式)。這是因為 openpyxl 通常會解釋公式並檢索計算結果。 要擷取實際儲存格值(包括公式),可以在載入工作簿時...
    程式設計 發佈於2024-11-08
  • Go 中如何有效率地將 UTF-8 字串轉換為位元組數組?
    Go 中如何有效率地將 UTF-8 字串轉換為位元組數組?
    將UTF-8 字串轉換為位元組陣列解組JSON 需要位元組切片輸入,而字串在Go 中儲存為UTF-8 。本文探討了 UTF-8 字串到位元組數組的高效轉換。 直接轉換Go 允許將字串轉換為位元組切片,建立字串位元組的副本:s := "some text" b := []byte(...
    程式設計 發佈於2024-11-08
  • 我如何使用 dpdm 修復 Redux 中的循環依賴錯誤
    我如何使用 dpdm 修復 Redux 中的循環依賴錯誤
    打破混亂循環:Redux 循環依賴之旅 最近,我在 Redux 程式碼庫中偶然發現了一個讓我摸不著頭緒的錯誤。如果您曾經在測試套件拋出毫無意義的錯誤時感到突然的混亂,您就會知道這種感覺。這是發生的事情以及我最終如何發現(並解決)問題的。 循環依賴到底是什麼? 當兩...
    程式設計 發佈於2024-11-08
  • 我可以在單一 MySQLi 語句中準備多個查詢嗎?
    我可以在單一 MySQLi 語句中準備多個查詢嗎?
    在單一 MySQLi 語句中準備多個查詢不可能在單一 MySQLi 語句中準備多個查詢。每個 mysqli_prepare() 呼叫只能準備一個查詢。 執行多個查詢的替代方法如果您需要一次執行多個查詢,您可以建立並為每個查詢執行單獨的mysqli_prepare() 語句。 $stmtUser = ...
    程式設計 發佈於2024-11-08
  • 在 Golang 中安全使用 Map:宣告和初始化的差異
    在 Golang 中安全使用 Map:宣告和初始化的差異
    介绍 本周,我正在为 golang 开发一个 API 包装器包,它处理发送带有 URL 编码值的 post 请求、设置 cookie 以及所有有趣的东西。但是,当我构建主体时,我使用 url.Value 类型来构建主体,并使用它来添加和设置键值对。然而,我在某些部分遇到了有线零指针...
    程式設計 發佈於2024-11-08
  • 下一個目標
    下一個目標
    我剛剛完成了我的論文,並以令人印象深刻的分數9.1/10,我對此感到非常自豪。提交給 REV-ECIT 2024 的截止日期是 9 月 30 日,目的是將我的論文變成已發表的期刊文章。目前我正在博士生導師的支持下完善我的工作,非常感謝他的指導。 ? 另外,在與SA進行了很長時間的面試後,提出了一...
    程式設計 發佈於2024-11-08
  • Better - 人工智慧驅動的程式碼審查器 GitHub Action
    Better - 人工智慧驅動的程式碼審查器 GitHub Action
    代码审查对于维护标准和强调项目中代码的最佳实践始终至关重要。这不是一篇关于开发人员应该如何审查代码的文章,更多的是关于将一​​部分代码委托给 AI。 正如 Michael Lynch 在他的文章“如何像人类一样进行代码审查”中提到的那样——我们应该让计算机处理代码审查的无聊部分。虽然迈克尔强调格式化...
    程式設計 發佈於2024-11-08
  • 如何使用 Java 8 有效統計列表中的詞頻?
    如何使用 Java 8 有效統計列表中的詞頻?
    使用 Java 8 計算詞頻在 Web 開發和資料分析中,理解詞頻至關重要。為了實現這一目標,我們將深入研究如何使用 Java 8 計算清單中單字的頻率。 Java 8 解決方案Java 8 中的 Stream API 為單字提供了一個優雅的解決方案頻率計數。首先,建立一個單字清單:List<...
    程式設計 發佈於2024-11-08
  • 什麼是封裝以及如何使用它。
    什麼是封裝以及如何使用它。
    什麼是封裝? Java 中的封裝就是隱藏某些東西如何運作的細節,同時仍然允許其他人使用它。您將資料(如變數)和方法(如函數)分組到一個單元中,稱為類別。您不是讓每個人都直接存取您的數據,而是提供方法(getter 和 setter)來控制數據的存取或更改方式。這樣,您可以保護您的資料並保持程式碼整...
    程式設計 發佈於2024-11-08
  • Java 中的倒置二元樹
    Java 中的倒置二元樹
    最近,我開始練習一些 LeetCode 練習,以提高我的演算法/資料結構技能。我可以說,該平台提供了一個良好的環境,可以與其他開發人員一起練習和學習多種程式語言的解決方案,與他人討論、分享解決方案,並練習大公司要求的程式碼挑戰。 什麼是 LeetCode? LeetCode 是一個...
    程式設計 發佈於2024-11-08
  • 如何在Python中高效率找出一個數的因數?
    如何在Python中高效率找出一個數的因數?
    在Python 中高效查找數字的因數確定數字的因數是各個領域中的常見任務,Python 提供了多種有效的方法來完成它。 一種最佳化方法涉及利用 Python 的 reduce 函數以及列表理解。這個簡潔的解決方案有效地找到給定數字的所有因子。 from functools import reduce...
    程式設計 發佈於2024-11-08
  • JavaScript 困境:嵌入腳本與內嵌執行?
    JavaScript 困境:嵌入腳本與內嵌執行?
    外部腳本標籤中的JavaScript:來源困境當使用帶有 的外部腳本標籤時語法,了解它們的限制很重要。嘗試將 JavaScript 直接嵌入到這些標記中(如下例所示)會導致意外行為:<script src="myFile.js"> alert("Th...
    程式設計 發佈於2024-11-08
  • 屬性 Hooks 無 PHP
    屬性 Hooks 無 PHP
    11 月,我們將推出我們心愛的 PHP 8.4 版本,隨之而來的是社區期待已久的新功能:屬性掛鉤!受到 C#、Swift 和 Kotlin 等其他語言的啟發,這個新功能消除了魔法方法 __set() 和 __get() 的麻煩。 我將展示一個範例,說明目前如何擁有 getter 和 setter,...
    程式設計 發佈於2024-11-08
  • 如何在不阻塞伺服器和客戶端的情況下即時讀取和回顯伺服器目前正在寫入的上傳檔案大小?
    如何在不阻塞伺服器和客戶端的情況下即時讀取和回顯伺服器目前正在寫入的上傳檔案大小?
    如何在不阻塞伺服器和客戶端的情況下,即時讀取和列印正在伺服器端寫入的上傳檔案的大小? 讓我們展開來討論這個問題:為了即時取得文件上傳的進度,我們在POST 請求中透過fetch() 從Blob、File、TypedArray 或ArrayBuffer 物件設定了body 物件。 目前的實作將 Fil...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中確定閏年:綜合指南
    如何在 Python 中確定閏年:綜合指南
    使用 Python 計算閏年來確定某一年是否為閏年涉及可以透過程式評估的特定標準。閏年可以四整除,但能被一百但不能被四百整除的年份除外。 解決此問題的一個潛在方法是實作一個自訂函數來檢查閏年。但是,當嘗試使用此類函數時,您可能會遇到模組傳回 None 而不是所需輸出的問題。 更強大、更全面的解決方案...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3