java - 如何读取 jedis 中键的 json 值?

标签 java json redis jedis

我有一个代码,我需要使用 Jedis 获取键“product_id”的 json 值,但我不知道 jedis.get() 操作是否可以直接输出 json。这是下面的代码。

Jedis jedis = pool.getResource();
    jedis.select(1);
    String attributeName = jedis.get(facet);
    jedis.select(0);
    JSONObject productJson =  jedis.get(productID);
    String attributeValue = productJson.getString(attributeName);

最佳答案

您可以使用 String redisCachedJSON = jedis.get(productId);

从 Redis 获取字符串 JSON

然后您可以使用此字符串创建您的 JSONObject

JSONObject jsonObject = new JSONObject(redisCachedJSON);

请记住,Jedis 上的 get() 期望存储在该键上的值是字符串表示形式。

我不太确定你的对象是什么,但我们假设 json 如下:

// Product json String
{
   "id" : 1,
   "price" : "2.63",
   "quantity" : 25,
   "attributeName" : "attributeValue",
}

您可以将您的 JSON 映射到一个比 HashMap 更容易处理的 Java 类(除非您的 json 键动态更改)并使用 Gson 将 json 字符串映射到该类的一个对象

public Class Product {
       int id;
       String price;
       int quantity;
       String attributeName;
}

String redisCachedJSON= jedis.get(productId);
Product product = new Gson().fromJson(redisCachedJSON, Product.class);
System.out.println(product.attributeName); // attributeValue

您也可以使用 JsonObjectMapper 来做到这一点

ObjectMapper objectMapper = new ObjectMapper();
Product product = objectMapper.readValue(redisCachedJSON, Product.class);

关于java - 如何读取 jedis 中键的 json 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279732/

相关文章:

java - 从模板字符串中查找值

java - 从文件加载和保存链表

java - 如何从具有泛型类型的方法中输入和返回值?

json - 使用 BASH 将 CSV 转换为 JSON

node.js - 如何使用node_redis在多个队列上使用BLPOP、BRPOP操作

amazon-web-services - 使用 Terraform 缩小 AWS 上的 Redis 缓存集群

ruby-on-rails - Sidekiq 从控制台工作但不从应用程序工作

java - 持久化时间戳类型只有日期没有时间

java - jersey json 尝试解码到同一对象

json - Go:JSON 输入意外结束,json.Unmarshal 返回 nil 值