Ausgabe
JSON-Darstellung fruit: { “type”: “sweet”, “value”: “Apple” } Ich möchte prägnante Darstellungen wie diese ausführen.
Frucht: “Apfel”
Lösung
Sie müssen die Zeichenfolge in JsonNode parsen und dann über Knoten iterieren und ihren Wert ersetzen. Überprüfen Sie auch, ob kein Null-Kind vorhanden ist, um zu vermeiden, dass ein einzelner Knoten durch einen Nullwert ersetzt wird.
public static void main(String[] args) throws JsonMappingException, JsonProcessingException {
String data =
"{ \"id\": \"123\", \"type\": \"fruit\", \"veritey1\": { \"type\": \"Property\", \"value\": \"moresweetappler\" }, \"quantity\": { \"type\": \"Property\", \"value\":10 } }";
ObjectMapper mapper = new ObjectMapper();
JsonNode nodes = mapper.readTree(data);
Iterator<Entry<String, JsonNode>> iterator = nodes.fields();
while (iterator.hasNext()) {
Entry<String, JsonNode> node = iterator.next();
if (node.getValue().hasNonNull("value")) {
((ObjectNode) nodes).set(node.getKey(), node.getValue().get("value"));
}
}
System.out.println(nodes.toString());
}
Ausgabe:
{"id":"123","type":"fruit","veritey1":"moresweetappler","quantity":10}
public static void main(String[] args) throws JsonMappingException, JsonProcessingException {
String data =
"{ \"tank\": { \"type\": \"Relationship\", \"object\": \"id007\", \"time\": \"2017-07-29T12:00:04Z\", \"providedBy\": { \"type\": \"Relationship\", \"object\": \"id009\" } } }";
ObjectMapper mapper = new ObjectMapper();
JsonNode nodes = mapper.readTree(data);
Iterator<Entry<String, JsonNode>> iterator = nodes.fields();
while (iterator.hasNext()) {
Entry<String, JsonNode> node = iterator.next();
reduceJson(node.getValue());
}
System.out.println(nodes.toString());
}
public static void reduceJson(JsonNode node) {
if (node.hasNonNull("type")) {
((ObjectNode) node).remove("type");
}
Iterator<Entry<String, JsonNode>> iterator = node.fields();
while (iterator.hasNext()) {
Entry<String, JsonNode> childnode = iterator.next();
if (childnode.getValue().isObject()) {
reduceJson(node.get(childnode.getKey()));
}
}
}
Ausgabe:
{"tank":{"object":"id007","time":"2017-07-29T12:00:04Z","providedBy":{"object":"id009"}}}
Beantwortet von – Dhaval Gajjar
Antwort geprüft von – Pedro (FixError Volunteer)