/** * Method that will handle serialization of Date(-like) values, using * {@link SerializationConfig} settings to determine expected serialization * behavior. * Note: date here means "full" date, that is, date AND time, as per * Java convention (and not date-only values like in SQL) */ public final void defaultSerializeDateValue(long timestamp, JsonGenerator gen) throws IOException { if (isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) { gen.writeNumber(timestamp); } else { gen.writeString(_dateFormat().format(new Date(timestamp))); } }
@Override public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeStartObject(); jgen.writeFieldName("testBeanSimple"); jgen.writeString("custom"); jgen.writeEndObject(); } }
@Override public void serialize(char[] value, JsonGenerator g, SerializerProvider provider) throws IOException { // [JACKSON-289] allows serializing as 'sparse' char array too: if (provider.isEnabled(SerializationFeature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS)) { g.writeStartArray(value.length); g.setCurrentValue(value); _writeArrayContents(g, value); g.writeEndArray(); } else { g.writeString(value, 0, value.length); } }
@Override public void writeHeader(final List<String> columnNames) throws IOException { jsonGenerator.writeStartArray(); for (String columnName : columnNames) { jsonGenerator.writeString(columnName); } jsonGenerator.writeEndArray(); }
/** * Convenience method for outputting a field entry ("member") * that has the specified numeric value. Equivalent to: *<pre> * writeFieldName(fieldName); * writeNumber(value); *</pre> */ public final void writeNumberField(String fieldName, float value) throws IOException { writeFieldName(fieldName); writeNumber(value); }
protected final void _writeObjectSuffix(Object value, JsonGenerator g, String typeId) throws IOException { g.writeEndObject(); if (typeId != null) { g.writeStringField(_typePropertyName, typeId); } }
/** * Method that will handle serialization of Dates used as {@link java.util.Map} keys, * based on {@link SerializationFeature#WRITE_DATE_KEYS_AS_TIMESTAMPS} * value (and if using textual representation, configured date format) */ public void defaultSerializeDateKey(long timestamp, JsonGenerator gen) throws IOException { if (isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS)) { gen.writeFieldName(String.valueOf(timestamp)); } else { gen.writeFieldName(_dateFormat().format(new Date(timestamp))); } }
/** * Method that will handle serialization of Dates used as {@link java.util.Map} keys, * based on {@link SerializationFeature#WRITE_DATE_KEYS_AS_TIMESTAMPS} * value (and if using textual representation, configured date format) */ public void defaultSerializeDateKey(Date date, JsonGenerator gen) throws IOException { if (isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS)) { gen.writeFieldName(String.valueOf(date.getTime())); } else { gen.writeFieldName(_dateFormat().format(date)); } }
/** * Method that will handle serialization of Date(-like) values, using * {@link SerializationConfig} settings to determine expected serialization * behavior. * Note: date here means "full" date, that is, date AND time, as per * Java convention (and not date-only values like in SQL) */ public final void defaultSerializeDateValue(Date date, JsonGenerator gen) throws IOException { if (isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) { gen.writeNumber(date.getTime()); } else { gen.writeString(_dateFormat().format(date)); } }
/** * @since 2.9 */ protected void _serializeAsString(Date value, JsonGenerator g, SerializerProvider provider) throws IOException { if (_customFormat == null) { provider.defaultSerializeDateValue(value, g); return; } // 19-Jul-2017, tatu: Here we will try a simple but (hopefully) effective mechanism for // reusing formatter instance. This is our second attempt, after initially trying simple // synchronization (which turned out to be bottleneck for some users in production...). // While `ThreadLocal` could alternatively be used, it is likely that it would lead to // higher memory footprint, but without much upside -- if we can not reuse, we'll just // clone(), which has some overhead but not drastic one. DateFormat f = _reusedCustomFormat.getAndSet(null); if (f == null) { f = (DateFormat) _customFormat.clone(); } g.writeString(f.format(value)); _reusedCustomFormat.compareAndSet(null, f); } }
@Override public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException { DateFormat df = (DateFormat) provider.getConfig().getDateFormat().clone(); jgen.writeString(df.format(value)); }
@Override public void serialize(Application value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeStringField(ELEM_NAME, value.getName()); jgen.writeObjectField(ELEM_INSTANCE, value.getInstances()); jgen.writeEndObject(); } }
@Override public void serialize(Map<String, String> value, JsonGenerator gen, SerializerProvider provider) throws IOException { gen.writeStartObject(); for (Map.Entry<String, String> entry : value.entrySet()) { gen.writeStringField(entry.getKey(), sanitize(entry.getKey(), entry.getValue())); } gen.writeEndObject(); }
@Override public void serialize( Key value, JsonGenerator jgen, SerializerProvider provider ) throws IOException { jgen.writeStartObject(); boolean includeNull = Include.NON_NULL != provider.getConfig().getDefaultPropertyInclusion().getValueInclusion(); if ( value.getParent() != null || includeNull ) { jgen.writeObjectField( RawKeyConstant.PARENT, value.getParent() ); } if ( value.getKind() != null || includeNull ) { jgen.writeStringField( RawKeyConstant.KIND, value.getKind() ); } jgen.writeNumberField( RawKeyConstant.ID, value.getId() ); if ( value.getName() != null || includeNull ) { jgen.writeStringField( RawKeyConstant.NAME, value.getName() ); } jgen.writeEndObject(); }
@Override public void serialize(Integer value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeStartObject(); gen.writeNumberField("customid", value); gen.writeEndObject(); } }
@Override public void serialize(Resources value, JsonGenerator jgen, SerializerProvider provider) throws IOException { final SerializationConfig config = provider.getConfig(); JavaType javaType = config.constructType(value.getClass()); JsonSerializer<Object> serializer = BeanSerializerFactory.instance.createSerializer(provider, javaType); jgen.writeStartObject(); serializer.serialize(value, jgen, provider); jgen.writeEndObject(); }
@Override public void writeHeader(final List<String> columnNames) throws IOException { jsonGenerator.writeStartObject(); for (String columnName : columnNames) { jsonGenerator.writeNullField(columnName); } jsonGenerator.writeEndObject(); }
@Override public void finished() { try { jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); jsonGenerator.close(); } catch (IOException e) { throw new UncheckedIOException(e); } } }
@Override public void serialize(Instant value, JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeString(ISO_INSTANT.format(value)); } }
@Override public void serialize(IBaseDataObject ibdo, JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeStartObject(); JavaType javaType = provider.constructType(IBaseDataObject.class); BeanDescription beanDesc = provider.getConfig().introspect(javaType); JsonSerializer<Object> serializer = BeanSerializerFactory.instance.findBeanSerializer(provider, javaType, beanDesc); // add some custom fields here jgen.writeObjectField("id", dropOffUtil.getBestIdFrom(ibdo)); jgen.writeObjectField("processedTimestamp", TimeUtil.getCurrentDateFullISO8601()); serializer.unwrappingSerializer(null).serialize(ibdo, jgen, provider); jgen.writeEndObject(); } }