首頁  >  文章  >  後端開發  >  以下是一些標題選項,重點關注問題和解決方案: **直接問題

以下是一些標題選項,重點關注問題和解決方案: **直接問題

Linda Hamilton
Linda Hamilton原創
2024-10-25 11:43:02336瀏覽

Here are a few title options, focusing on the problem and solution:

**Direct Question

JSON 解碼為結構體與映射

在所描述的場景中,應用程式接收一個包含與JSON 匹配的結構體的介面{}作為位元組數組接收的結構。然而,在 JSON 解碼時,結果是一個映射而不是預期的結構。

此行為是由於 json.Unmarshal 處理指標的方式造成的。透過引用最初保存此結構的介面{},解碼過程無法確定底層類型。因此,它會傳回一個簡單的映射,而不是所需的結構。

要修正此問題,可以考慮兩種方法:

1。直接介面轉換:

將指向結構體的指標直接傳遞給json.Unmarshal 作為抽象介面:

<code class="go">var ping interface{} = &Ping{}
deserialize([]byte(`{"id":42}`), ping)</code>

2.基於反射的指標建立:

如果指向結構體的直接指針不可用,請利用反射創建一個新指針,反序列化到其中,然後將值複製回來:

<code class="go">var ping interface{} = Ping{}
nptr := reflect.New(reflect.TypeOf(ping))
deserialize([]byte(`{"id":42}`), nptr.Interface())
ping = nptr.Interface()</code>

通過採用這兩種方法中的任何一種,解碼過程都可以正確識別底層結構並從JSON 資料填入其欄位。

以上是以下是一些標題選項,重點關注問題和解決方案: **直接問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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