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으로 마샬링해야합니다. 내 개체에 반사 세부 정보 (개체의'Type')가 있습니다. 그래서 기본적으로 모든 유형의 데이터를 저장하고 다시 가져올 수 있습니다. 데이터베이스는 내가 사용하는 맞춤형 데이터베이스입니다. 나는 단지'reflect.Type' 타입의 데이터를 저장하고 안전하게 되돌려 놓는 방법을 원한다. – Minty
타입의 이름을 저장하는 것을 생각했지만, 어떻게 구체적인 타입을 얻을 수 있을까요? 나는 당황 스럽다 – Minty
데이터베이스에 다른 유형의 객체를 저장하려는 경우, 유형의 이름 만 들어있는 "유형"필드를 추가 할 수 있습니다. 그런 다음 타입 필드를 먼저 디코딩해야만합니다 (타입을'struct {Type string}'으로 디코딩). – tux21b