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.

Cómo crear un método genérico para ObjectNode put.

Tengo un caso de uso en el que necesito admitir diferentes tipos de valores para ser insertados en ObjectNode (de Jackson ObjectMapper). Sin embargo, cuando intento usar genéricos, aparecen errores Cannot resolve method 'put(java.lang.String, T)

public static <t> JsonNode of(String key, T value) {
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode root = objectMapper.createObjectNode();
    root.put(key, value); // <= el error aparece en esta línea

    return root;
}

El ObjectNode subyacente admite muchos tipos de valores, por ejemplo, <string, boolean=””>, <string, string=””>, <string, integer=””>, etc.

Para obtener la documentación completa, visita Jackson

¿Cuál es la forma correcta de hacer esto? Gracias.</string,></string,></string,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el uso de genéricos en este caso es que el método ‘put’ en ‘ObjectNode’ espera un tipo específico de valor, no uno genérico. Para resolver esto, puedes utilizar la sobrecarga de métodos para crear diferentes versiones del método ‘of’ que manejen diferentes tipos de valores. Por ejemplo:

    public static JsonNode of(String key, String value) {
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode root = objectMapper.createObjectNode();
        root.put(key, value);
        return root;
    }
    
    public static JsonNode of(String key, Boolean value) {
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode root = objectMapper.createObjectNode();
        root.put(key, value);
        return root;
    }
    
    public static JsonNode of(String key, Integer value) {
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode root = objectMapper.createObjectNode();
        root.put(key, value);
        return root;
    }
    

    De esta manera, puedes llamar al método apropiado basado en el tipo de valor que deseas insertar en ‘ObjectNode’. Puedes agregar más sobrecargas de métodos según sea necesario para otros tipos de valores.

Comments are closed.