es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;

}
“`>

Tags:  , ,

Answer

  1. Avatar for 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 clase JsonNode 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:

    public static JsonNode removeProperty(JsonNode node, List<string> removedField) {
        ObjectNode modifiedNode = (ObjectNode) node;
    
        for (String nodeToBeRemoved: removedField) {
            JsonNode fieldNode = modifiedNode.path(nodeToBeRemoved);
            if (!fieldNode.isMissingNode()) {
                modifiedNode.remove(nodeToBeRemoved);
            }
        }
    
        return modifiedNode;
    }
    

    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étodo remove(). De lo contrario, pasamos al siguiente campo. Este código debería ser más legible y directo, sin sacrificar el rendimiento.

Comments are closed.