Estate atento porque en este escrito hallarás el resultado que buscas.Esta división fue evaluado por nuestros expertos para asegurar la calidad y exactitud de nuestro post.
Solución:
Esto funcionará para usted:
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);
Map map = new HashMap<>();
addKeys("", root, map, new ArrayList<>());
map.entrySet()
.forEach(System.out::println);
private void addKeys(String currentPath, JsonNode jsonNode, Map map, List suffix)
if (jsonNode.isObject())
ObjectNode objectNode = (ObjectNode) jsonNode;
Iterator> iter = objectNode.fields();
String pathPrefix = currentPath.isEmpty() ? "" : currentPath + "-";
while (iter.hasNext())
Map.Entry entry = iter.next();
addKeys(pathPrefix + entry.getKey(), entry.getValue(), map, suffix);
else if (jsonNode.isArray())
ArrayNode arrayNode = (ArrayNode) jsonNode;
for (int i = 0; i < arrayNode.size(); i++)
suffix.add(i + 1);
addKeys(currentPath, arrayNode.get(i), map, suffix);
if (i + 1 ();
ValueNode valueNode = (ValueNode) jsonNode;
map.put(currentPath, valueNode.asText());
Para el json
usted dio la salida será:
name-items-name-1-2=2nditem
name-items-name-1-1=firstitem
name-items-stock-1-1=12
name-first-1=John
name-items-stock-1-2=23
company=John Company
name-last-1=Doe
elements() te da un iterador para subnodos y fields() te da las propiedades.
Con eso, puede codificar una función recursiva que recorra todos los nodos.
Aquí hay una muestra de trabajo, la entrada es String
public static void main(String[] args) throws IOException
JsonNode node = om.readTree(input);
LOG.info(node.toString());
process("", node);
private static void process(String prefix, JsonNode currentNode)
if (currentNode.isArray())
ArrayNode arrayNode = (ArrayNode) currentNode;
Iterator node = arrayNode.elements();
int index = 1;
while (node.hasNext())
process(!prefix.isEmpty() ? prefix + "-" + index : String.valueOf(index), node.next());
index += 1;
else if (currentNode.isObject())
currentNode.fields().forEachRemaining(entry -> process(!prefix.isEmpty() ? prefix + "-" + entry.getKey() : entry.getKey(), entry.getValue()));
else
LOG.info(prefix + ": " + currentNode.toString());
Sección de Reseñas y Valoraciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)