Java源码示例:com.fasterxml.jackson.core.JsonTokenId
示例1
@Override
public Bean2 deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Bean2 bean2 = new Bean2();
p.nextToken();
do {
String propName = p.getCurrentName();
if (propName == null) {
break;
}
if (p.getCurrentTokenId() != JsonTokenId.ID_FIELD_NAME && propName.equals("p1")) {
bean2.setP1(p.getText());
} else if (p.getCurrentTokenId() != JsonTokenId.ID_FIELD_NAME && propName.equals("p2")) {
bean2.setP2(new BigDecimal(p.getText()));
}
} while (p.nextToken() != null);
return bean2;
}
示例2
@Override
public Duration deserialize(JsonParser parser, DeserializationContext context) throws IOException {
switch (parser.getCurrentTokenId()) {
case JsonTokenId.ID_NUMBER_FLOAT:
BigDecimal value = parser.getDecimalValue();
long seconds = value.longValue();
int nanoseconds = DecimalUtils.extractNanosecondDecimal(value, seconds);
return Duration.ofSeconds(seconds, nanoseconds);
case JsonTokenId.ID_NUMBER_INT:
return Duration.ofSeconds(parser.getLongValue());
case JsonTokenId.ID_STRING:
String string = parser.getText().trim();
if (string.length() == 0) {
return null;
}
return Duration.parse(string);
}
throw context.mappingException("Expected type float, integer, or string.");
}
示例3
public LocalDate deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException {
if (parser.hasTokenId(JsonTokenId.ID_STRING)) {
String date = parser.getText().trim();
if (date.isEmpty()) {
return null;
}
return LocalDateTime.ofInstant(Instant.parse(date), ZoneOffset.UTC).toLocalDate();
}
return null;
}
示例4
@Override
public Duration deserialize(JsonParser parser, DeserializationContext context) throws IOException
{
switch (parser.currentTokenId())
{
case JsonTokenId.ID_NUMBER_FLOAT:
BigDecimal value = parser.getDecimalValue();
return DecimalUtils.extractSecondsAndNanos(value, Duration::ofSeconds);
case JsonTokenId.ID_NUMBER_INT:
if(context.isEnabled(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS)) {
return Duration.ofSeconds(parser.getLongValue());
}
return Duration.ofMillis(parser.getLongValue());
case JsonTokenId.ID_STRING:
String string = parser.getText().trim();
if (string.length() == 0) {
if (!isLenient()) {
return _failForNotLenient(parser, context, JsonToken.VALUE_STRING);
}
return null;
}
try {
return Duration.parse(string);
} catch (DateTimeException e) {
return _handleDateTimeException(context, e, string);
}
case JsonTokenId.ID_EMBEDDED_OBJECT:
// 20-Apr-2016, tatu: Related to [databind#1208], can try supporting embedded
// values quite easily
return (Duration) parser.getEmbeddedObject();
case JsonTokenId.ID_START_ARRAY:
return _deserializeFromArray(parser, context);
}
return _handleUnexpectedToken(context, parser, JsonToken.VALUE_STRING,
JsonToken.VALUE_NUMBER_INT, JsonToken.VALUE_NUMBER_FLOAT);
}
示例5
@Override
public LocalDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException {
if (parser.hasTokenId(JsonTokenId.ID_STRING)) {
String string = parser.getText().trim();
if (string.length() == 0) {
return null;
}
return LocalDateTime.parse(string, _formatter);
}
throw context.wrongTokenException(parser, JsonToken.START_ARRAY, "Expected array or string.");
}
示例6
@Override
public int getCurrentTokenId() {
return currentToken == null
? JsonTokenId.ID_NO_TOKEN
: currentToken.id();
}
示例7
@Override
public int getCurrentTokenId() {
return currentToken == null
? JsonTokenId.ID_NO_TOKEN
: currentToken.id();
}
示例8
@Override
public Object deserializeFromObject(JsonParser p, DeserializationContext ctxt) throws IOException {
if (_nonStandardCreation || _needViewProcesing) {
return super.deserializeFromObject(p, ctxt);
}
Object bean = null;
if (p.hasTokenId(JsonTokenId.ID_FIELD_NAME)) {
String propertyName = p.getCurrentName();
do {
p.nextToken();
SettableBeanProperty property = _beanProperties.find(propertyName);
if (property == null) {
handleUnknownVanilla(p, ctxt, bean, propertyName);
continue;
}
// lazily create the bean, the id property must be the first property
if (bean == null) {
if (propertyName.equals(_objectIdReader.propertyName.getSimpleName())) {
// deserialize id
Object id = property.deserialize(p, ctxt);
ReadableObjectId objectId = ctxt.findObjectId(id,
_objectIdReader.generator, _objectIdReader.resolver);
bean = objectId == null ? null : objectId.resolve();
if (bean == null) {
bean = _valueInstantiator.createUsingDefault(ctxt);
property.set(bean, id);
}
} else {
bean = _valueInstantiator.createUsingDefault(ctxt);
}
p.setCurrentValue(bean);
}
property.deserializeAndSet(p, ctxt, bean);
} while ((propertyName = p.nextFieldName()) != null);
}
return bean;
}
示例9
public void parseDocument(ElementHandler docHandler)
throws IOException {
push(docHandler);
JsonToken tkn = parser.nextToken();
while (null != tkn) {
switch(tkn.id()) {
case JsonTokenId.ID_START_OBJECT:
ElementHandler newHandler = top().newObject();
push(newHandler);
break;
case JsonTokenId.ID_END_OBJECT:
ElementHandler endHandler = top();
endHandler.endObject();
pop();
break;
case JsonTokenId.ID_FIELD_NAME:
ElementHandler fieldHandler = top();
fieldHandler.fieldName(parser.getText());
break;
case JsonTokenId.ID_START_ARRAY:
top().newArray();
break;
case JsonTokenId.ID_END_ARRAY:
top().endArray();
break;
case JsonTokenId.ID_STRING:
top().withString(parser.getText());
break;
case JsonTokenId.ID_NUMBER_INT:
top().withBigInteger(parser.getBigIntegerValue());
break;
case JsonTokenId.ID_NUMBER_FLOAT:
top().withBigDecimal(parser.getDecimalValue());
break;
case JsonTokenId.ID_TRUE:
top().withBoolean(true);
break;
case JsonTokenId.ID_FALSE:
top().withBoolean(false);
break;
case JsonTokenId.ID_NULL:
top().withNull();
break;
default:
PushJsonLogger.LOG.warn(fmtToken(tkn, parser.getText()));
break;
}
// Keep going
tkn = parser.nextToken();
}
}
示例10
public LocalDateTime deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException {
if (parser.hasTokenId(JsonTokenId.ID_STRING)) {
String date = parser.getText().trim();
if (date.isEmpty()) {
return null;
}
return LocalDateTime.ofInstant(Instant.parse(date), ZoneOffset.UTC);
}
return null;
}