Сравнение двух переменных при одинаковом значении, но разном типе (например, Int16, Int32, Int64)

Мне нужно сравнить две переменные, чтобы определить, совпадают ли они. Эти переменные приводятся как «объект», и им можно присвоить любой тип .NET.

Проблема, с которой я сталкиваюсь, заключается в том, являются ли они обеими числами. В ситуациях, когда они имеют одинаковое значение (например, они оба -1), но имеют разные типы (например, один - Int32, другой - Int64), тогда object.Equals возвращает false. Моя проблема в том, что я не могу найти пример того, как использовать синтаксический анализатор и контекст метода "десериализации", который я должен реализовать.

Кто-нибудь может написать код для этого простого примера, чтобы я мог использовать его как начать сборку моего настоящего десериализатора?

public class A{
  private String a1;
  private Integer a2;
}

public class B{
  private String b1;
}

public class C{
  @JsonDeserialize(keyUsing=ADeserializer.class)
  //also tried this: @JsonDeserialize(keyAs=A.class) without success
  private Map fieldOfC;
  private String c1;
}

public class ADeserializer extends StdKeyDeserializer {

  protected ADeserializer(Class cls) {
    super(cls);
  }

  protected Object _parse(String key, DeserializationContext ctxt) throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    return mapper.readValue(key, A.class);
  }
}

Заранее спасибо

РЕДАКТИРОВАТЬ : погуглил, я нашел тест той же проблемы, что и у меня. Это как раз моя проблема

РЕДАКТИРОВАТЬ : изменен расширенный класс со StdDeserializer на StdKeyDeserializer, когда я читал здесь в методе findKeyDeserializer (org.codehaus.jackson.map.DeserializationConfig, org.codehaus .jackson.type.JavaType, org.codehaus.jackson.map.BeanProperty)

РЕДАКТИРОВАТЬ : после решения этой проблемы я получил этот , связанный с этим.

5
задан Community 23 May 2017 в 12:26
поделиться