简体   繁体   中英

How I can write the value of mongo objectid in json string in golang

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM