¿Cómo recuperar un elemento JSON de un objeto JsonNode como String usando jackson?

Soy bastante nuevo en Jackson y Spring-Boot. Estoy tratando de analizar el objeto JsonNode para recuperar una propiedad anidada del objeto JsonNode como una cadena.

Esto es para una aplicación de arranque por resorte donde PUBLICO un archivo json en una ArrayList de mi objeto de clase y luego leo un solo elemento de matriz en el objeto JsonNode. He intentado convertir el objeto JsonNode en un ArrayNode y luego almacenar la propiedad principal en él usando

ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
JsonNode rootNode = mapper.valueToTree(workflow);

ArrayNode arrayNode = (ArrayNode) rootNode.get("metadata");

y luego busque la propiedad requerida en el arrayNode usando

Iterator<JsonNode> arrayNodeIterator = arrayNode.elements();
while(arrayNodeIterator.hasNext()){
    JsonNode jsonNode = arrayNodeIterator.next();
    String str = jsonNode.get("name").asText();
}

El siguiente es el json que estoy tratando de leer.

{
    "metadata": {
      "name": "workflow-name"
    },
    "tasks": []
}

Sin embargo, recibo el siguiente error en las solicitudes GET.

java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.ObjectNode cannot be cast to class com.fasterxml.jackson.databind.node.ArrayNode (com.fasterxml.jackson.databind.node.ObjectNode and com.fasterxml.jackson.databind.node.ArrayNode are in unnamed module of loader '
Respuesta 1

De lo anterior JSON metadataes JSONObject que no esArrayNode

1) obtener el metadataasJsonNode

JsonNode rootNode = mapper.valueToTree(workflow);

JsonNode  metaNode = rootNode.get("metadata");

2) Ahora obtén el name

System.out.println(metaNode.get("name").textValue());

3) taskses ArrayNodetan obtener el taskscomoArray

ArrayNode arrayNode = (ArrayNode) rootNode.get("tasks");
Respuesta: 2

pruebe este ejemplo ... para obtener más información, consulte aquí https://www.baeldung.com/jackson-json-to-jsonnode

 String jsonString = "{"k1":"v1","k2":"v2"}";
    ObjectMapper mapper = new ObjectMapper();
    JsonNode actualObj = mapper.readTree(jsonString);

    // When
    JsonNode jsonNode1 = actualObj.get("k1");
    assertThat(jsonNode1.textValue(), equalTo("v1"));
Respuesta: 3

La sintaxis que del código java no es aplicable a mysql. El setString () de java saldrá con 'y no' que no se acepta en mysql. Intenté en mi localhost ejecutar el código, se ...

símbolo [javac]: método setDocumentFromString (java.lang.String) ubicación [javac]: clase org.xhtmlrenderer.pdf.ITextRenderer [javac] renderer.setDocumentFromString (html); [javac] ...

Escribí este método estático en Python para hacer la primera búsqueda de amplitud. Sin embargo, utilizo principalmente Java, y quiero tener una idea de cómo las estructuras de datos se convierten a Java, genéricos dados, etc. Mi código es: def ...

Estoy desarrollando un Cliente usando HttpClient en Java para acceder a una Aplicación REST. En esto quiero pasar el nombre de dos parámetros (value = "Kiran") y la dirección (Value = "5th Corner / Road") como parámetros de ruta. ...