add(new StdDeserializer.ByteDeserializer(Byte.class, null)); add(new StdDeserializer.ShortDeserializer(Short.class, null)); add(new StdDeserializer.CharacterDeserializer(Character.class, null)); add(new StdDeserializer.IntegerDeserializer(Integer.class, null)); add(new StdDeserializer.LongDeserializer(Long.class, null)); add(new StdDeserializer.ByteDeserializer(Byte.TYPE, Byte.valueOf((byte)(0)))); add(new StdDeserializer.ShortDeserializer(Short.TYPE, Short.valueOf((short)0))); add(new StdDeserializer.CharacterDeserializer(Character.TYPE, Character.valueOf('\0'))); add(new StdDeserializer.IntegerDeserializer(Integer.TYPE, Integer.valueOf(0))); add(new StdDeserializer.LongDeserializer(Long.TYPE, Long.valueOf(0L)));
@Override public Character deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken t = jp.getCurrentToken(); int value; if (t == JsonToken.VALUE_NUMBER_INT) { // ok iff ascii value value = jp.getIntValue(); if (value >= 0 && value <= 0xFFFF) { return Character.valueOf((char) value); } } else if (t == JsonToken.VALUE_STRING) { // this is the usual type // But does it have to be exactly one char? String text = jp.getText(); if (text.length() == 1) { return Character.valueOf(text.charAt(0)); } // actually, empty should become null? if (text.length() == 0) { return (Character) getEmptyValue(); } } throw ctxt.mappingException(_valueClass, t); } }
add(new StdDeserializer.ByteDeserializer(Byte.class, null)); add(new StdDeserializer.ShortDeserializer(Short.class, null)); add(new StdDeserializer.CharacterDeserializer(Character.class, null)); add(new StdDeserializer.IntegerDeserializer(Integer.class, null)); add(new StdDeserializer.LongDeserializer(Long.class, null)); add(new StdDeserializer.ByteDeserializer(Byte.TYPE, Byte.valueOf((byte)(0)))); add(new StdDeserializer.ShortDeserializer(Short.TYPE, Short.valueOf((short)0))); add(new StdDeserializer.CharacterDeserializer(Character.TYPE, Character.valueOf('\0'))); add(new StdDeserializer.IntegerDeserializer(Integer.TYPE, Integer.valueOf(0))); add(new StdDeserializer.LongDeserializer(Long.TYPE, Long.valueOf(0L)));
add(new StdDeserializer.ByteDeserializer(Byte.class, null)); add(new StdDeserializer.ShortDeserializer(Short.class, null)); add(new StdDeserializer.CharacterDeserializer(Character.class, null)); add(new StdDeserializer.IntegerDeserializer(Integer.class, null)); add(new StdDeserializer.LongDeserializer(Long.class, null)); add(new StdDeserializer.ByteDeserializer(Byte.TYPE, Byte.valueOf((byte)(0)))); add(new StdDeserializer.ShortDeserializer(Short.TYPE, Short.valueOf((short)0))); add(new StdDeserializer.CharacterDeserializer(Character.TYPE, Character.valueOf('\0'))); add(new StdDeserializer.IntegerDeserializer(Integer.TYPE, Integer.valueOf(0))); add(new StdDeserializer.LongDeserializer(Long.TYPE, Long.valueOf(0L)));
@Override public Character deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken t = jp.getCurrentToken(); int value; if (t == JsonToken.VALUE_NUMBER_INT) { // ok iff ascii value value = jp.getIntValue(); if (value >= 0 && value <= 0xFFFF) { return Character.valueOf((char) value); } } else if (t == JsonToken.VALUE_STRING) { // this is the usual type // But does it have to be exactly one char? String text = jp.getText(); if (text.length() == 1) { return Character.valueOf(text.charAt(0)); } // actually, empty should become null? if (text.length() == 0) { return (Character) getEmptyValue(); } } throw ctxt.mappingException(_valueClass, t); } }
@Override public Character deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken t = jp.getCurrentToken(); int value; if (t == JsonToken.VALUE_NUMBER_INT) { // ok iff ascii value value = jp.getIntValue(); if (value >= 0 && value <= 0xFFFF) { return Character.valueOf((char) value); } } else if (t == JsonToken.VALUE_STRING) { // this is the usual type // But does it have to be exactly one char? String text = jp.getText(); if (text.length() == 1) { return Character.valueOf(text.charAt(0)); } // actually, empty should become null? if (text.length() == 0) { return (Character) getEmptyValue(); } } throw ctxt.mappingException(_valueClass, t); } }
JacksonNonBlockingObjectMapperFactory factory = new JacksonNonBlockingObjectMapperFactory(); factory.setJsonDeserializers(Arrays.asList(new StdDeserializer[]{ // StdDeserializer, here, comes from Jackson (org.codehaus.jackson.map.deser.StdDeserializer) new StdDeserializer.ShortDeserializer(Short.class, null), new StdDeserializer.IntegerDeserializer(Integer.class, null), new StdDeserializer.CharacterDeserializer(Character.class, null), new StdDeserializer.LongDeserializer(Long.class, null), new StdDeserializer.FloatDeserializer(Float.class, null), new StdDeserializer.DoubleDeserializer(Double.class, null), new StdDeserializer.NumberDeserializer(), new StdDeserializer.BigDecimalDeserializer(), new StdDeserializer.BigIntegerDeserializer(), new StdDeserializer.CalendarDeserializer() })); ObjectMapper om = factory.createObjectMapper();
add(new StdDeserializer.ByteDeserializer(Byte.class, null)); add(new StdDeserializer.ShortDeserializer(Short.class, null)); add(new StdDeserializer.CharacterDeserializer(Character.class, null)); add(new StdDeserializer.IntegerDeserializer(Integer.class, null)); add(new StdDeserializer.LongDeserializer(Long.class, null)); add(new StdDeserializer.ByteDeserializer(Byte.TYPE, Byte.valueOf((byte)(0)))); add(new StdDeserializer.ShortDeserializer(Short.TYPE, Short.valueOf((short)0))); add(new StdDeserializer.CharacterDeserializer(Character.TYPE, Character.valueOf('\0'))); add(new StdDeserializer.IntegerDeserializer(Integer.TYPE, Integer.valueOf(0))); add(new StdDeserializer.LongDeserializer(Long.TYPE, Long.valueOf(0L)));
@Override public Character deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken t = jp.getCurrentToken(); int value; if (t == JsonToken.VALUE_NUMBER_INT) { // ok iff ascii value value = jp.getIntValue(); if (value >= 0 && value <= 0xFFFF) { return Character.valueOf((char) value); } } else if (t == JsonToken.VALUE_STRING) { // this is the usual type // But does it have to be exactly one char? String text = jp.getText(); if (text.length() == 1) { return Character.valueOf(text.charAt(0)); } // actually, empty should become null? if (text.length() == 0) { return (Character) getEmptyValue(); } } throw ctxt.mappingException(_valueClass, t); } }