The objectid is always unique and unpredictable. I want to that this var should take value of primitive.NewObjectID.Hex()
var mockData = `{"status":201,"message":"User Created Successfully!","data":{"data":"{"InsertedID":primitive.NewObjectID().Hex()}"}}`
But writing it like this gives me a straight string in output.
You have to "break" the string literal and concatenate the parts using +
:
var mockData = `{"status":201,"message":"User Created Successfully!","data":{"data":{"InsertedID":"` + primitive.NewObjectID().Hex() + `"}}}`
This will work because the hex object ID does not need any special escaping in JSON, but in general you should use the encoding/json
package to generate valid JSON (which knows about proper escaping).
Using the encoding/json
package this is how it could look like:
var s struct {
Status int `json:"status"`
Message string `json:"message"`
Data struct {
Data struct {
InsertedID string
} `json:"data"`
} `json:"data"`
}
s.Status = 201
s.Message = "User Created Successfully!"
s.Data.Data.InsertedID = primitive.NewObjectID().Hex()
out, err := json.Marshal(s)
if err != nil {
panic(err)
}
fmt.Println(string(out))
Try the examples on the Go Playground .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.