I have a function that allows me to filter specific JSON files using another JSON object as a filter.
See code:
public Map<String, Entry<JsonObject, Long>> loadFilter(Coll<?> coll, JsonObject filter){
Map<String, Entry<JsonObject, Long>> ret = null;
File directory = getDirectory(coll);
if ( ! directory.isDirectory()) return ret;
File[] files = directory.listFiles(JsonFileFilter.get());
ret = new LinkedHashMap<String, Entry<JsonObject, Long>>(files.length);
Set<Map.Entry<String, JsonElement>> filterRules = filter.entrySet();
for (File file : files)
{
String id = idFromFile(file);
Entry<JsonObject, Long> entry = loadFile(file);
if(entry == null) continue;
if(entry.getKey() == null) continue;
Set<Map.Entry<String, JsonElement>> fileEntries = entry.getKey().entrySet();
if (fileEntries.containsAll(filterRules)) {
ret.put(id, entry);
}
}
return ret;
}
Imagine I have the following JSON:
{
"objects": [
"object1",
"object2"
],
}
What I'm trying to do is filter out any files in which the array objects contain object1. I do not need object 2, I want to filter out files that have at least object1 in the array of objects.
Nothing works in the code below:
JsonObject filter = new JsonObject();
JsonArray array = new JsonArray();
array.add(new JsonPrimitive("object1"));
filter.add("objects", array);
Map<String, Entry<JsonObject, Long>> result = loadFilter(coll, filter);
Any help is assigned.
source
share