[FIXED] Entfernen Sie die objektspezifischen JSON-Werte

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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like