0
Here is the code:的Json解組reflect.Type
package main
import (
"fmt"
"encoding/json"
"reflect"
)
var(
datajson []byte
)
type User struct {
Name string
Type reflect.Type
}
func MustJSONEncode(i interface{}) []byte {
result, err := json.Marshal(i)
if err != nil {
panic(err)
}
return result
}
func MustJSONDecode(b []byte, i interface{}) {
err := json.Unmarshal(b, i)
if err != nil {
panic(err)
}
}
func Store(a interface{}) {
datajson = MustJSONEncode(a)
fmt.Println(datajson)
}
func Get(a []byte, b interface{}) {
MustJSONDecode(a, b)
fmt.Println(b)
}
func main() {
dummy := &User{}
david := &User{Name: "DavidMahon"}
typ := reflect.TypeOf(david)
david.Type = typ
Store(david)
Get(datajson, dummy)
}
我可以成功元帥reflect.Type
但是當我做了相反的,它會發生混亂。我知道reflect.Type
是一個接口。那麼我在這裏做錯了什麼?如何在json中存儲reflect.Type
值,然後安全地取回?
我想將數據(如某些類型的對象)存儲到數據庫中。爲了存儲這些數據,我需要將它編組爲json。我的對象包含反射細節(對象的「類型」)。所以基本上我可以存儲任何類型的數據並將其恢復。數據庫是我使用它的一種自定義數據庫。我只想要一種方法來存儲'reflect.Type'類型的數據並安全地將其恢復。 – Minty
我想存儲這個類型的名字,但是我怎樣才能從中得到具體的類型?我很困惑 – Minty
如果你想在數據庫中存儲不同類型的對象,你可以添加一個只包含類型名稱的「Type」字段。然後,在解碼基於該類型的真實對象之前,必須先解碼類型字段(只需解碼爲「struct {Type string}」)。 – tux21b