Мой вопрос очень похож на этот , однако вместо преобразования float64
в string
, который обрабатывается с использованием строкового тега .В моем случае я пытаюсь преобразовать ObjectID
в строку, используя метод .Hex()
.И наоборот, используя функцию .FromHex()
на обратном пути.
Однако, в более общем смысле, как преобразовать тип X
в тип Y
и обратно во время Marshal
& Unmarshal
ing?
Мой пример:
package main
import (
"log"
"fmt"
"encoding/json"
"github.com/mongodb/mongo-go-driver/bson/objectid"
)
type Greeting struct {
Id *objectid.ObjectID `json:"id"`
Greeting string `json:"greeting,omitempty"`
}
func main() {
// Create ObjectID
id, err := objectid.FromHex("5b14dd20f6418c8443a5ffec")
if err != nil { log.Fatal(err) }
// Create Greeting
g := Greeting{&id, "Hello, World!"}
// Marshal to json
j, err := json.Marshal(g)
if err != nil { log.Fatal(err) }
// Print Json
fmt.Printf("Json: %s", string(j))
}
Вывод:
Json: {"id":[91,20,221,32,246,65,140,132,67,165,255,236],"greeting":"Hello, World!"}
Принимая во внимание, что я хотел бы это:
Json: {"id":"5b14dd20f6418c8443a5ffec","greeting":"Hello, World!"}