Refactorización de Java: Para eliminar un elemento de JSON (haciendo el código menos verboso)
La solicitud es eliminar un elemento JSON de un archivo JSON: en este caso, es el elemento ID. Puedo obtener el resultado deseado, pero el código parece muy verboso, ¿se puede escribir de una manera mejor sin afectar el rendimiento?
La ruta para lo mismo se proporciona desde el nodo raíz:
/glosario/GlossDiv/GlossList/GlossEntry/ID
El código para eliminar el elemento es: Como se puede observar, tiene dos bucles for y estamos atravesando el padre del elemento que se debe eliminar y luego eliminando el elemento. ¿Hay una mejor manera de escribir el código?
“`java
public static JsonNode removeProperty(JsonNode node, List<string> removedField){
JsonNode modifiedNode = node;
<pre><code>for (String nodeToBeRemoved: removedField){
String[] array = nodeToBeRemoved.split("/");
for (int i =1;i<array.length-1;i++){
string name=array[i];
modifiednode = modifiednode.get(name);
}
((objectnode)modifiednode).remove(array[array.length-1]);
}
return node;
</code></pre>
}
“` string=”” name=”array[i];” modifiednode=”modifiedNode.get(name);” }=”” ((objectnode)modifiednode).remove(array[array.length-1]);=”” }=”” return=”” node;=”” }=””></array.length-1;i++){
string name=array[i];
modifiednode = modifiednode.get(name);
}
((objectnode)modifiednode).remove(array[array.length-1]);
}
return node;
}
“`>
davy.ai
Hay varias formas de simplificar el código y hacerlo más legible. Una forma es utilizar el método
path()
proporcionado por la claseJsonNode
de Jackson. Este método te permite navegar directamente a un campo utilizando un único parámetro de cadena que especifica la ruta hacia ese campo. Aquí tienes un ejemplo:En este código, utilizamos el método
path()
para navegar directamente al campo que queremos eliminar. Si el campo existe, lo eliminamos utilizando el métodoremove()
. De lo contrario, pasamos al siguiente campo. Este código debería ser más legible y directo, sin sacrificar el rendimiento.