Как прочитать значение JSON для ключа в джедаев? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть код, в котором мне нужно получить значение json для ключа "product_id" с помощью Jedis, но я не знаю, может ли операция 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);

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете получить String JSON от Redis, используя String redisCachedJSON = jedis.get(productId);

Затем вы можете создать свой JSONObject из этой строки, используя

JSONObject jsonObject = new JSONObject(redisCachedJSON);

Имейте в виду, что get() в Jedis ожидает, что значение, хранящееся в этом ключе, будет строковым представлением.

Я не совсем уверен, каков ваш объект, но давайте предположим, что json следующий:

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

Вы можете сопоставить свой JSON с классом Java, который проще обрабатывать, чем HashMap (если ваши ключи json не изменяются динамически), и сопоставить строку json с объектом этого класса, используя Gson

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);
...