@Override
        public Any deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
            JsonNode root = p.getCodec().readTree(p);
            JsonNode type = root.get(JSON_TYPE);
            JsonNode value = root.get(JSON_VALUE);

            if (type == null || !type.isTextual()) {
                ctxt.reportMappingException(
                        "invalid '@type' field when deserializing ProtoBuf Any object");
            }

            if (value == null || !value.isTextual()) {
                ctxt.reportMappingException(
                        "invalid '@value' field when deserializing ProtoBuf Any object");
            }

            return Any.newBuilder()
                    .setTypeUrl(type.textValue())
                    .setValue(ByteString.copyFrom(value.binaryValue()))
                    .build();
        }
AnyDeserializer converts the custom JSON representation of an {@link Any} value into its
original form.

<p>{@see AnySerializer} for details on this representation.
common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java