我有一个代码,我需要使用 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);
然后您可以使用此字符串创建您的 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/