目標是解組包含已知組合的JSON 字串和未知的鍵/值對到Go 結構中。已知字段應解組到特定的結構體字段,而未知字段應儲存為結構體中鍵/值對的集合。
要實現此目的,結構體可以使用已知字段和映射切片的組合來定義:
<code class="go">type Message struct { Known1 string `json:"known1"` Known2 string `json:"known2"` Unknowns []map[string]interface{} }</code>
此JSON 字串:
<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>
可以使用以下方式解組步驟:
或者,不使用結構體,可以將JSON 直接解組到map[string]interface{},這將提供對所有鍵/值對作為動態集合的存取。
<code class="go">var msg map[string]interface{} json.Unmarshal([]byte(jsonMsg), &msg)</code>
使用結構體還是映射的選擇取決於應用程式的特定要求。如果需要預先定義的已知欄位和結構化方法,則結構體是合適的。如果事先不知道未知欄位的確切性質,或需要更靈活的動態資料結構,則地圖是可行的選擇。
以上是如何將帶有任意鍵/值對的 JSON 解組到 Go 結構中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!