redis 取出JSON 转Integer
时间: 2023-12-22 10:04:34 浏览: 81
如果你从 Redis 中取出了一个 JSON 格式的字符串,并且里面包含一个整数字段,你可以通过如下方式将其转换为整数:
- 使用 Redis 的 get 命令获取 JSON 字符串。
- 使用 JSON 解析器将 JSON 字符串解析为一个 JSON 对象。
- 从 JSON 对象中获取整数字段,并将其转换为整数类型。
下面是一个示例代码:
import json
import redis
# 连接 Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 获取 JSON 字符串
json_str = r.get('key')
# 解析 JSON
json_obj = json.loads(json_str)
# 获取整数字段并转换为整数类型
int_value = int(json_obj['int_field'])
其中,key
是你在 Redis 中存储 JSON 字符串的键值,int_field
是 JSON 对象中包含整数的字段名,int_value
是最终转换得到的整数。
相关问题
redis 序列化@class
Redis 序列化 @class
使用方法及示例
在处理复杂对象时,为了保持 Java 对象的类型信息,在序列化过程中可以保留类名。这有助于反序列化时能够正确还原原始的对象结构。
JSON 序列化器配置
当使用 Fastjson2 进行序列化时,可以通过设置 SerializerFeature.WriteClassName
来让序列化后的 JSON 字符串包含完整的类路径名称:
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
public class SerializationUtil {
public static String serialize(Object obj) {
return JSON.toJSONString(obj, true); // 启用了 WriteClassName 特性
}
public static <T> T deserialize(String jsonStr, Class<T> clazz) {
JSONObject jsonObject = JSON.parseObject(jsonStr);
return JSON.toJavaObject(jsonObject, clazz);
}
}
此代码片段展示了如何通过启用特性来确保生成的 JSON 数据流中包含了源对象所属的具体类的信息[^1]。
定义测试用实体类
假设有一个简单的 User
类作为待存储的对象模型:
public class User {
private Integer id;
private String name;
private int age;
// Getters and Setters omitted for brevity
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
编写操作逻辑
接下来编写一段程序用于演示将上述 User
实例保存至 Redis 并从中取出的过程:
// 假设已经存在一个名为 redisTemplate 的 Spring Data Redis 模板实例
String key = "user:john";
User user = new User();
user.setId(1L);
user.setName("John Doe");
user.setAge(30);
// 将用户对象转换成带有 @class 信息的 JSON 字符串存入 Redis
redisTemplate.opsForValue().set(key, SerializationUtil.serialize(user));
// 从 Redis 获取 JSON 字符串并解析回原生 User 对象
String jsonString = (String) redisTemplate.opsForValue().get(key);
System.out.println(SerializationUtil.deserialize(jsonString, Object.class));
这段代码先创建了一个新的 User
对象并将它转为带 @class
属性标记的 JSON 形式存入 Redis;之后再读取出来并通过指定目标类型完成自动映射过程。