The objectid is always unique and unpredictable. I want 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.
CodePudding user response:
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.
