首頁 >後端開發 >Golang >如何在 Go 中高效解析多種訊息類型的 JSON?

如何在 Go 中高效解析多種訊息類型的 JSON?

Barbara Streisand
Barbara Streisand原創
2024-12-21 12:02:11129瀏覽

How to Efficiently Parse JSON with Multiple Message Types in Go?

在Golang 中解析JSON,無需冗餘解組

處理包含不同訊息類型的JSON 資料時,直接解組為已知的結構類型可能不可行可行的。相反,可以採用兩步驟流程來解決此問題。

第1 步:將JSON 物件解組為通用映射

將JSON 物件解組為通用映射[ string]interface{} 來擷取頂層鍵和值。

第 2 步:辨識並解組特定鍵

迭代對應並辨識與所需訊息類型相對應的鍵。例如:

switch k {
case "ping":
    // ...
case "ack":
    // ...
}

對於每個標識的鍵,將對應的值解組到 json.RawMessage 而不是介面{}:

var myAck json.RawMessage

第 3步:解組到具體結構

最後,將RawMessage轉換為所需的結構,直接解組,無需中間的編組/解組過程:

err = json.Unmarshal(myAck, &myAck)

通過部分解組到RawMessage 並避免冗餘解組,這種方法簡化了流程並提高了解析複雜JSON 資料時的效率。

以上是如何在 Go 中高效解析多種訊息類型的 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn