Example usage for com.fasterxml.jackson.core JsonTokenId ID_START_OBJECT

List of usage examples for com.fasterxml.jackson.core JsonTokenId ID_START_OBJECT

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonTokenId ID_START_OBJECT.

Prototype

int ID_START_OBJECT

To view the source code for com.fasterxml.jackson.core JsonTokenId ID_START_OBJECT.

Click Source Link

Document

Id used to represent JsonToken#START_OBJECT

Usage

From source file:org.apache.unomi.persistence.spi.PropertyTypedObjectDeserializer.java

@Override
public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    if (jp.getCurrentTokenId() != JsonTokenId.ID_START_OBJECT) {
        return super.deserialize(jp, ctxt);
    }//  www .j ava2s .  co m
    ObjectCodec codec = jp.getCodec();
    TreeNode treeNode = codec.readTree(jp);
    Class<? extends Object> objectClass = null;
    if (treeNode instanceof ObjectNode) {
        ObjectNode root = (ObjectNode) treeNode;
        Iterator<Map.Entry<String, JsonNode>> elementsIterator = root.fields();
        while (elementsIterator.hasNext()) {
            Map.Entry<String, JsonNode> element = elementsIterator.next();
            String name = element.getKey();
            if (fieldValuesToMatch.containsKey(name)) {
                Set<String> valuesToMatch = fieldValuesToMatch.get(name);
                for (String valueToMatch : valuesToMatch) {
                    if (element.getValue().asText().matches(valueToMatch)) {
                        objectClass = registry.get(name + "=" + valueToMatch);
                        break;
                    }
                }
                if (objectClass != null) {
                    break;
                }
            }
        }
        if (objectClass == null) {
            objectClass = HashMap.class;
        }
    } else {

    }
    if (objectClass == null) {
        return super.deserialize(codec.treeAsTokens(treeNode), ctxt);
    }
    return codec.treeToValue(treeNode, objectClass);
}