Cómo analizar el archivo YAML

pepe1:

Estoy usando analizador YAML de Jackson y quiero analizar un archivo YAML , sin tener que crear manualmente una clase Java que coincide con el archivo YAML. Todos los ejemplos que puedo encontrar el mapa a un objeto, como aquí: https://www.baeldung.com/jackson-yaml

El archivo yaml que se da a mí no siempre será el mismo, así que necesito para analizar durante el tiempo de ejecución, es posible lograr esto con Jackson-yaml?

Sean Patrick Floyd:

Si no conoce el formato exacto, vas a tener que analizar los datos a un árbol y procesar de forma manual, lo que puede ser tedioso. Que haría uso opcional para el mapeo y filtrar.

Ejemplo:

public static final String YAML = "invoice: 34843\n"
    + "date   : 2001-01-23\n"
    + "product:\n"
    + "    - sku         : BL394D\n"
    + "      quantity    : 4\n"
    + "      description : Basketball\n"
    + "      price       : 450.00\n"
    + "    - sku         : BL4438H\n"
    + "      quantity    : 1\n"
    + "      description : Super Hoop\n"
    + "      price       : 2392.00\n"
    + "tax  : 251.42\n"
    + "total: 4443.52\n";

public static void main(String[] args) throws IOException {
    ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
    JsonNode jsonNode = objectMapper.readTree(YAML);

    Optional.of(jsonNode)
            .map(j -> j.get("product"))
            .filter(ArrayNode.class::isInstance)
            .map(ArrayNode.class::cast)
            .ifPresent(projectArray -> projectArray.forEach(System.out::println));
}

Salida:

{"sku":"BL394D","quantity":4,"description":"Basketball","price":450.0}
{"sku":"BL4438H","quantity":1,"description":"Super Hoop","price":2392.0}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=365178&siteId=1
Recomendado
Clasificación