@Override public void serialize(Record record, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeStringField("id", record.getId()); jgen.writeStringField("type", record.getType()); jgen.writeStringField("creationDate", record.getTime().toString()); jgen.writeObjectFieldStart("fields"); for (Map.Entry<String, Field> entry : record.getFieldsEntrySet()) { // retrieve event field String fieldName = entry.getKey(); Field field = entry.getValue(); Object fieldValue = field.getRawValue(); String fieldType = field.getType().toString(); // dump event field as record attribute try { switch (fieldType.toLowerCase()) { case "string": jgen.writeStringField(fieldName, (String) fieldValue); break; case "integer": jgen.writeNumberField(fieldName, (int) fieldValue); break; case "long": jgen.writeNumberField(fieldName, (long) fieldValue); break; case "float": jgen.writeNumberField(fieldName, (float) fieldValue); break; case "double": jgen.writeNumberField(fieldName, (double) fieldValue); break; case "boolean": jgen.writeBooleanField(fieldName, (boolean) fieldValue); break; default: jgen.writeObjectField(fieldName, fieldValue); break; } } catch (Exception ex) { logger.debug("exception while serializing field {}", field); } } jgen.writeEndObject(); jgen.writeEndObject(); }