【问题标题】:Verifying if Key Values of Redis(Jedis) are JSON验证 Redis(Jedis) 的键值是否为 JSON
【发布时间】:2018-08-22 10:42:03
【问题描述】:

我正在尝试制作一个迭代 Redis 数据库的 Java 程序,以验证键值;如果它是一个有效的 JSON,则提取到一个单独的模式中(对此还没有做任何事情);否则,什么也不做,继续搜索其他键。

这是我的功能代码:

Jedis jedis = new Jedis("localhost");

    ScanResult<String> scanResult = jedis.scan("0");
    List<String> keys = scanResult.getResult();
    String nextCursor = scanResult.getStringCursor();
    JSONParser parser = new JSONParser();
    int counter = 0;

    while(true) {

        if(nextCursor.equals("0")) {
            break;
        }

        scanResult = jedis.scan(nextCursor);
        nextCursor = scanResult.getStringCursor();
        keys = scanResult.getResult();
        for(counter = 0; counter <= keys.size(); counter++) {
            try {
                JSONObject json = (JSONObject) parser.parse(keys.get(counter).toString());

            } catch (ParseException e) {
                e.printStackTrace();
            } 
        }
        System.out.println(keys = scanResult.getResult());
    }
    jedis.close();

我在使用 JSON Parse 时遇到了麻烦(如果我正确使用他,我会遇到问题),因为我认为我只得到了 KEY NAMES(而不是它们的值)。 我尝试使用Map&lt;String, String&gt; = scanResult.getResult() 而不是List&lt;String&gt;,但它指出了类型不匹配的问题。

似乎很容易解决,但我有点卡在这一点上...欢迎任何可以提供帮助的提示,谢谢。

P.S.:我不能使用 ReJSON 之类的模块,必须使用原生 redis 函数。

【问题讨论】:

    标签: java json database redis jedis


    【解决方案1】:

    我想我明白了。回答我自己的问题:

    public void readRedis() {
        Jedis jedis = new Jedis("localhost");
    
        ScanResult<String> scanResult = jedis.scan("0");
        String nextCursor = scanResult.getStringCursor();
        JSONParser parser = new JSONParser();
        int counter = 0;
    
        while (true) {
            nextCursor = scanResult.getStringCursor();
            List<String> keys = scanResult.getResult();
            for (counter = 0; counter < keys.size(); counter++) {
                if(counter == keys.size()) {
                    break;
                }               
                try {
                    JSONObject json = (JSONObject) parser.parse(jedis.rpop(keys.get(counter)));
                    documentoJson(json);                    
                    System.out.println("Added to function 'documentoJson'");
    
                } catch (ParseException e) {
                    System.out.println("Not a valid JSON");
                }
            }
            if (nextCursor.equals("0")) {
                break;
            }
            scanResult = jedis.scan(nextCursor);
        }
        jedis.close();
    }
    
    public JSONArray documentoJson(JSONObject json) {
        JSONObject jObject = new JSONObject();
        JSONArray jArray = new JSONArray();
        jArray.add(json);
        jObject.put("JSON Document", jArray);
        return jArray;
     }
    

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2021-09-06
      • 2011-12-02
      • 2017-03-31
      相关资源
      最近更新 更多