在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中文網其他相關文章!