首頁 >後端開發 >Golang >如何動態地將欄位新增至未知 Go 結構的 JSON 輸出?

如何動態地將欄位新增至未知 Go 結構的 JSON 輸出?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-04 15:31:12728瀏覽

How to Dynamically Add Fields to JSON Output from Unknown Go Structs?

動態增強未知結構的JSON 輸出

簡介
在Go 中,可以增強透過增強將已增強知結構嵌入為匿名欄位來進行JSON 輸出。但是,此技術僅適用於特定類型。本文探討如何將此功能擴展到未知的結構或介面。

範例
考慮以下範例:

此程式碼列印以下 JSON :

注意「名稱」欄位是如何包裝在不必要的「範例」中的

解決方案1:透過反射產生動態型別
為了避免「範例」對象,我們需要在執行時間產生動態類型。我們可以使用反射來建立一個嵌入未知介面並包含附加「Extra」欄位的結構類型。

透過此更改,輸出將變為:

解決方案2:編組和解組
另一種方法是編組接口,將其解組到映射中,添加附加字段,然後再次編組:

此方法產生與動態類型方法相同的輸出。

結論
這裡提出的兩個解決方案都可以使用未知結構或介面的任意欄位來擴展 JSON 輸出。基於反射的方法提供了類型安全的解決方案,而編組和解組技術更簡單,但可能更慢。方法的選擇取決於應用程式的特定要求。

以上是如何動態地將欄位新增至未知 Go 結構的 JSON 輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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