Go Redis конвертирует результат HGetAll в структуру

Я получаю данные из redis.HGetAll, но не нашел чистого способа преобразовать результат в мою структуру

var object struct {
    x int
}

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

//TODO import the result content into the object 

Есть ли какая-нибудь функция у этого эффектного футляра?

Пока я использую json package(marshal, затем UnMarshal to struct".

2 ответа

Результатом Redis является строка map[string]. Для каждого поля в структуре получите значение из карты, преобразуйте строку в тип поля и присвойте полю.

 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

Если ваша структура данных не слишком сложна, один из удобных способов сохранить данные с помощью redis - использовать jsons. Толькоjson.Marhsal() вашу структуру и сохраните ее как строку, а затем json.Unmarshal() эту строку обратно в структуру.

Другие вопросы по тегам