是的,可以使用 ObjectFactory 来允许从 Long 到 String 的转换。只需在您的路径上注册 ObjectFactory,例如:
new JSONDeserializer().use("some.path.to.bar", new EnhancedStringObjectFactory() ).deserialize( json, new SomeObject() );
public class EnhancedStringObjectFactory implements ObjectFactory {
public Object instantiate(ObjectBinder context, Object value, Type targetType, Class targetClass) {
if( value instanceof String ) {
return value;
} else if( value instanceof Number ) {
return ((Number)value).toString();
} else {
throw context.cannotConvertValueToTargetType(value, String.class);
}
}
}
您甚至可以将其注册为 String 的默认 ObjectFactory,它会为任何进入反序列化器的 String 处理这种情况:
new JSONDeserializer().use( String.class, new EnhancedStringObjectFactory() ).deserialize( json, new SomeObject() );