Class TomlSerializer
- All Implemented Interfaces:
Function<Object,,String> ThrowingFunction<Object,,String> RecordWritable,TomlMetaProvider
TOML (Tom's Obvious Minimal Language) maps unambiguously to hash tables with native typing. See TOML v1.0.0 specification.
Media types
Produces:
Accepts:
Bean-to-TOML mapping
- Simple properties → key-value pairs
- Nested beans →
[tableName] sections - Collections of beans →
[[tableName]] array of tables - Collections of simple values →
key = [a, b, c] - Maps with string keys →
[mapName] table - Null properties are omitted (TOML has no null type)
Example:
Example output (Map of name/age):
name = "Alice" age = 30
Complex (nested table + array):
name = "Alice" age = 30 tags = ["a", "b", "c"] [address] street = "123 Main St" city = "Boston" state = "MA"
Limitations compared to JSON
TOML is a configuration format with a more restricted type system than JSON.
The following features supported by JsonSerializer
are not available or limited in TOML:
- Null values — TOML has no null type. By default, null properties are omitted.
Use
keepNullProperties() to write the configurednullValue string (e.g.<NULL> ) instead. - Map keys — TOML tables only support string keys. Maps with non-string keys
(e.g.
Map<Integer,String> ) have keys converted viatoString() ; ensure results are valid TOML keys. Null keys are serialized as the stringnull . - Polymorphic types —
addBeanTypes() andaddRootType() add_type discriminators for polymorphic parsing; use with care as TOML structure differs from JSON. - Root-level collections — TOML expects a root table. Root arrays use array-of-tables
(
[[item]] ) for beans/maps, or a_value wrapper for primitives and simple arrays. - Duplicate keys — TOML forbids duplicate keys; structures that would produce duplicate keys may yield invalid TOML.
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 TomlSerializerDefault serializer.static final TomlSerializerDefault serializer with blank lines between sections.protected final intprotected final StringString written for null values.protected final booleanprotected final booleanFields 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 TomlSerializer.Buildercreate()Create a session builder based on the properties defined on this context.Returns the string written for null values.Returns the TOML-specific metadata on the specified bean property.getTomlClassMeta(ClassMeta<?> cm) Returns the TOML-specific metadata on the specified class.booleanStreaming-quality signal queryable before opening a cursor.Returns the properties on this bean as a map for debugging.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, getSession, getStreamCharset, isUseWhitespace, isWriterSerializer, println, 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. -
DEFAULT_READABLE
Default serializer with blank lines between sections. -
inlineTableThreshold
-
useInlineTables
-
sortKeys
-
nullValue
String written for null values.
-
-
Constructor Details
-
TomlSerializer
Constructor.- Parameters:
builder- The builder.
-
-
Method Details
-
create
-
getNullValue
Returns the string written for null values.- Returns:
- The null marker.
-
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.
-
getTomlBeanPropertyMeta
Description copied from interface:TomlMetaProviderReturns the TOML-specific metadata on the specified bean property.- Specified by:
getTomlBeanPropertyMetain interfaceTomlMetaProvider- Parameters:
bpm- The bean property to return the metadata on.- Returns:
- The metadata.
-
getTomlClassMeta
Description copied from interface:TomlMetaProviderReturns the TOML-specific metadata on the specified class.- Specified by:
getTomlClassMetain interfaceTomlMetaProvider- Parameters:
cm- The class to return the metadata on.- Returns:
- The metadata.
-
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.
-
properties
Description copied from class:ContextReturns the properties on this bean as a map for debugging.- Overrides:
propertiesin classWriterSerializer- Returns:
- The properties on this bean as a map for debugging.
-
writeRecords
Convenience delegator that opens aRecordWriterover the output using default session arguments (mirrorsWriterSerializer.write(Object)).The real implementation lives on
TomlSerializerSession.writeRecords(Object). Callers that need request-derived configuration should callcreateSession()and invokeTomlSerializerSession.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.
-