亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何序列化 [string]reflect.Value 類型的映射?

如何序列化 [string]reflect.Value 類型的映射?

Go
搖曳的薔薇 2023-04-10 10:32:13
我一直在努力弄清楚如何讓它發揮作用,但我被困住了。我有一個看起來像這樣的對象:type PropSet map[string]*Proptype Prop struct {    val reflect.Value}我需要生成它包含的所有鍵值對的 JSON 表示。我一直在閱讀關于如何編組更多普通類型的 SO 帖子,但我一直無法弄清楚如何處理 reflect.Value 類型。我想我應該能夠做這樣簡單的事情:func (p Prop) MarshalJSON() ([]byte, error) {    return json.Marshal(p.val.Value().Interface())}...但它只是行不通。有什么建議么?附加說明:我沒有編寫數據結構,但我認為它使用 reflect.Value 作為映射值的原因是我們期望的值可以是整數、浮點數、字符串等。所以這本質上是需要對基本接口進行某種類型推斷以找出返回結果。
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

您快到了:reflect.Value它本身沒有Value接收方方法,也不需要接收方方法。將您的MarshalJSON實施更改為以下工作:


func (p Prop) MarshalJSON() ([]byte, error) {

    return json.Marshal(p.val.Interface())

}

.Value()(即從函數調用鏈中刪除)。


游樂場鏈接


(我不喜歡這里的使用reflect——依賴于反射的解決方案很少清晰易懂,但似乎你不能改變上游數據結構,除了選擇不使用它。)


查看完整回答
反對 回復 2023-04-10
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號