Class CsvSerializer
- All Implemented Interfaces:
Function<Object,,String> ThrowingFunction<Object,,String> CsvMetaProvider,RecordWritable
This serializer converts Java objects (primarily collections of beans) into CSV format, where each bean becomes a row and bean properties become columns. The first row typically contains column headers derived from bean property names.
JSON Parity Features (opt-in):
- Type discriminator —
addBeanTypes().addRootType()adds a_typecolumn for polymorphic parsing. - Byte arrays —
byteArrayFormat(BASE64)(default) orSEMICOLON_DELIMITEDforbyte[]; primitive arrays as[1;2;3]. - Nested structures —
allowNestedStructures(true)enables inline{key:val}and[val;val]in cells. - Null marker —
nullValue("<NULL>")(default) for unambiguous null.
Data Structures Not Supported:
- Parent/inherited properties — Hierarchy flattens; may collide with child names.
- Optional wrappers — May serialize as the inner value; round-trip differs from tree formats.
Best Supported:
Collections of flat beans or maps whose properties are primitives, strings, numbers, enums, dates,
byte arrays, or (with allowNestedStructures) nested beans, maps, and lists.
Example output (list of maps with a,b):
a,b foo,bar
Complex (list of beans with nested address, flattened):
name,age,address_street,address_city,address_state,tags Alice,30,123 Main St,Boston,MA,"a,b,c"
Notes:
- This class is thread safe and reusable.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.apache.juneau.marshall.serializer.WriterSerializer
WriterSerializer.DefaultBuilderNested classes/interfaces inherited from class org.apache.juneau.marshall.serializer.Serializer
Serializer.Null -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final CsvSerializerDefault serializer, all default settings.Fields inherited from class org.apache.juneau.marshall.serializer.WriterSerializer
maxIndent, quoteChar, quoteCharOverride, useWhitespaceFields inherited from class org.apache.juneau.marshall.serializer.Serializer
accept, addBeanTypes, addRootType, keepNullProperties, listener, nonDefault, produces, sortCollections, sortMaps, trimEmptyCollections, trimEmptyMaps, trimStringsFields inherited from class org.apache.juneau.marshall.MarshallingContextable
marshallingContextFields inherited from class org.apache.juneau.marshall.Context
CONTEXT_APPLY_FILTER -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncopy()Creates a builder from this context object.static CsvSerializer.Buildercreate()Creates a new builder for this object.Create a session builder based on the properties defined on this context.Returns the format for serializingbyte[]arrays in CSV cells.Returns the language-specific metadata on the specified bean property.getCsvClassMeta(ClassMeta<?> cm) Returns the language-specific metadata on the specified class.Returns the string written for null values.Returns a session to use for this context.booleanReturns whether inline{key:val}and[val;val]notation is enabled.booleanStreaming-quality signal queryable before opening a cursor.writeRecords(Object output) Convenience delegator that opens aRecordWriterover the output using default session arguments (mirrorsWriterSerializer.write(Object)).Methods inherited from class org.apache.juneau.marshall.serializer.WriterSerializer
applyThrows, getMaxIndent, getQuoteChar, getStreamCharset, isUseWhitespace, isWriterSerializer, println, properties, quoteChar, toString, writeMethods inherited from class org.apache.juneau.marshall.serializer.Serializer
createSerializerBuilder, doWrite, forEachAcceptMediaType, getListener, getMediaTypeRanges, getPrimaryMediaType, getResponseContentType, getResponseHeaders, getUriContext, getUriRelativity, getUriResolution, isAddBeanTypes, isAddRootType, isKeepNullProperties, isNonDefault, isSortCollections, isSortMaps, isTrimEmptyCollections, isTrimEmptyMaps, isTrimStrings, write, writeToStringMethods inherited from class org.apache.juneau.marshall.MarshallingTraverseContext
getDetectRecursions, getIgnoreRecursions, getInitialDepth, getMaxDepth, isDetectRecursions, isIgnoreRecursions, shouldDetectRecursionsMethods inherited from class org.apache.juneau.marshall.MarshallingContextable
getDurationFormat, getMarshallingContext, getPeriodFormatMethods inherited from class org.apache.juneau.marshall.Context
createBuilder, getAnnotationProvider, init, isDebug, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.juneau.commons.function.ThrowingFunction
apply
-
Field Details
-
DEFAULT
Default serializer, all default settings.
-
-
Constructor Details
-
CsvSerializer
Constructor.- Parameters:
builder- The builder for this object.
-
-
Method Details
-
create
Creates a new builder for this object.- Returns:
- A new builder.
-
getByteArrayFormat
Returns the format for serializingbyte[]arrays in CSV cells.- Returns:
- The byte array format.
-
isAllowNestedStructures
Returns whether inline{key:val}and[val;val]notation is enabled.- Returns:
- Whether nested structures are allowed.
-
getNullValue
Returns the string written for null values.- Returns:
- The null marker.
-
copy
Description copied from class:ContextCreates a builder from this context object.Builders are used to define new contexts (e.g. serializers, parsers) based on existing configurations.
- Overrides:
copyin classWriterSerializer- Returns:
- A new Builder object.
-
createSession
Description copied from class:ContextCreate a session builder based on the properties defined on this context.Use this method for creating sessions where you want to override basic settings. Otherwise, use
Context.getSession()directly.- Overrides:
createSessionin classWriterSerializer- Returns:
- A new session builder.
-
getCsvBeanPropertyMeta
Description copied from interface:CsvMetaProviderReturns the language-specific metadata on the specified bean property.- Specified by:
getCsvBeanPropertyMetain interfaceCsvMetaProvider- Parameters:
bpm- The bean property to return the metadata on.- Returns:
- The metadata.
-
getCsvClassMeta
Description copied from interface:CsvMetaProviderReturns the language-specific metadata on the specified class.- Specified by:
getCsvClassMetain interfaceCsvMetaProvider- Parameters:
cm- The class to return the metadata on.- Returns:
- The metadata.
-
getSession
Description copied from class:ContextReturns a session to use for this context.Note that subclasses may opt to return a reusable non-modifiable session.
- Overrides:
getSessionin classWriterSerializer- Returns:
- A new session object.
-
writeRecords
Convenience delegator that opens aRecordWriterover the output using default session arguments (mirrorsWriterSerializer.write(Object)).CSV is naturally row-oriented — each
write(...)call appends one row — but the current cursor is buffered (the full list is materialized at close); a streaming implementation is a Phase 3b deferred item, soisRecordStreaming()returnsfalse .The real implementation lives on
CsvSerializerSession.writeRecords(Object). Callers that need request-derived configuration should callcreateSession()and invokeCsvSerializerSession.writeRecords(Object)on the built session instead.- Specified by:
writeRecordsin interfaceRecordWritable- Parameters:
output- The output.- Returns:
- A new
RecordWriter. - Throws:
IOException- If a problem occurred opening the underlying output.
-
isRecordStreaming
Description copied from interface:RecordWritableStreaming-quality signal queryable before opening a cursor.- Specified by:
isRecordStreamingin interfaceRecordWritable- Returns:
true ifRecordWritable.writeRecords(Object)returns an O(1)-memory streaming cursor;false for buffered (whole-value) formats backed byRecordAdapter.
-