Мне нужно сравнить две переменные, чтобы определить, совпадают ли они. Эти переменные приводятся как «объект», и им можно присвоить любой тип .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)
РЕДАКТИРОВАТЬ : после решения этой проблемы я получил этот , связанный с этим.