过滤密钥的JSON&使用其他JSON对象的值

时间:2017-03-11 19:30:56

标签: java json mongodb gson

我目前遇到以下问题:

我希望遍历一组JSON文件。我想过滤掉与过滤器匹配的某些JSON文件。此过滤器是另一个JSON对象。

MongoDB能够做到这一点;您将JSON对象作为参数提供,它将列出包含给定JSON元素的文档。

我需要一个flatfile版本,但我无法成功。我正在使用GSON作为我的JSON库。

1 个答案:

答案 0 :(得分:1)

使用每个包含JSON字符串的文件路径数组,以及表示过滤规则的JsonObject。返回与过滤规则匹配的文件路径列表。

public List<String> filter(String[] filePaths, JsonObject rules) throws FileNotFoundException {
        final List<String> filtered = new ArrayList<String>();
        final Set<Map.Entry<String, JsonElement>> rulesEntries = rules.entrySet();
        for (String path : filePaths) {
            final Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path))));
            final JsonObject file = jsonParser.parse(reader).getAsJsonObject();
            final Set<Map.Entry<String, JsonElement>> fileEntries = file.entrySet();
            if (fileEntries.containsAll(rulesEntries)) filtered.add(path);
        }
        return filtered;
    }