Amin Shojaei
Amin Shojaei

Reputation: 6528

Go Redis convert HGetAll result to struct

I'm getting data from the redis.HGetAll but found no clean way to convert results into my Struct.

var object struct {
    x int
}

result := redisClient.HGetAll(context.Background(), "the_h_key")

//TODO import the result content into the object 

Is there any function for this spectacular case?

I'm using the JSON package(marshal, then UnMarshal to a struct).

Upvotes: 0

Views: 4845

Answers (2)

Vaibhav Mishra
Vaibhav Mishra

Reputation: 445

If your datastructure isn't too complex, one convenient way to save data using redis is as jsons. Just json.Marhsal() your struct and save it as a string and then json.Unmarshal() that string into your struct back.

Upvotes: 1

Taylor Rex
Taylor Rex

Reputation: 21

The result from Redis is a map[string]string. For each field in the struct, get the value from the map, convert the string to the field type and assign to the field.

 var o object
 var err error

 o.x, err = strconv.Atoi(m["x"])
 if err != nil {
      // handle the error
 }

 ... repeat for other fields as needed

Upvotes: 2

Related Questions