Я хочу, чтобы скопировать JSON полей из одного файла в другой, но только после того, как поле удовлетворяет определенному условию, как, например,Копирование отфильтрованных данных в формате JSON из одного файла в другой с помощью gson библиотеки в Java
{"dataset":
[
{"album_id":1,
"album_type":"Live Performance",
"artist_name":"John Doe",....
}
]
}
Я хочу для копирования только тех записей, у которых есть имя пользователя или имя другого пользователя, иначе пропустите кортеж для копирования. Я использую следующий код, чтобы добавить отфильтрованные записи в JSONObject «wr», которые затем пишу в выходной файл. Но это не дает мне желаемых результатов
public static void dumpJSONElement(JsonElement element) {
if (element.isJsonObject()) {
JsonObject obj = element.getAsJsonObject();
java.util.Set<java.util.Map.Entry<String,JsonElement>> entries = obj.entrySet();
java.util.Iterator<java.util.Map.Entry<String,JsonElement>> iter = entries.iterator();
while (iter.hasNext()) {
java.util.Map.Entry<String,JsonElement> entry = iter.next();
if(entry.getKey().equals(filterKey)){
if(! entry.getValue().toString().replace("\"", "").equals(filterValue)){
wr.put(entry.getKey(), entry.getValue());
}
}
else{
wr.put(entry.getKey(), entry.getValue());
}
dumpJSONElement(entry.getValue());
}
} else if (element.isJsonArray()) {
JsonArray array = element.getAsJsonArray();
java.util.Iterator<JsonElement> iter = array.iterator();
while (iter.hasNext()) {
JsonElement entry = iter.next();
dumpJSONElement(entry);
}
} else if (element.isJsonPrimitive()) {
JsonPrimitive value = element.getAsJsonPrimitive();
} else if (element.isJsonNull()) {
} else {
System.out.println("Error. Unknown type of element");
}
}
Самое простое решение создать POJO, которые представляют вашу JSON, чем создавать Список с использованием библиотеки gson. и теперь, используя список, вы можете легко фильтровать. –
Спасибо за опцию, но файлы json, которые я хочу обработать, предварительно не форматированы. Пользователь будет поставлять файл, поэтому вы не можете заранее получить json-архитектуру для POJO –
, которую вы можете сделать, см. Ответ. –