TOML.jl is a Julia standard library for parsing and writingTOML v1.0 files.
julia> using TOMLjulia> data = """ [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] """;julia> TOML.parse(data)Dict{String, Any} with 1 entry: "database" => Dict{String, Any}("server"=>"192.168.1.1", "ports"=>[8001, 8001…To parse a file, useTOML.parsefile. If the file has a syntax error, an exception is thrown:
julia> using TOMLjulia> TOML.parse(""" value = 0.0.0 """)ERROR: TOML Parser error:none:1:16 error: failed to parse value value = 0.0.0 ^[...]There are other versions of the parse functions (TOML.tryparse andTOML.tryparsefile) that instead of throwing exceptions on parser error returns aTOML.ParserError with information:
julia> using TOMLjulia> err = TOML.tryparse(""" value = 0.0.0 """);julia> err.typeErrGenericValueError::ErrorType = 14julia> err.line1julia> err.column16TheTOML.print function is used to print (or serialize) data into TOML format.
julia> using TOMLjulia> data = Dict( "names" => ["Julia", "Julio"], "age" => [10, 20], );julia> TOML.print(data)names = ["Julia", "Julio"]age = [10, 20]julia> fname = tempname();julia> open(fname, "w") do io TOML.print(io, data) endjulia> TOML.parsefile(fname)Dict{String, Any} with 2 entries: "names" => ["Julia", "Julio"] "age" => [10, 20]Keys can be sorted according to some value
julia> using TOMLjulia> TOML.print(Dict( "abc" => 1, "ab" => 2, "abcd" => 3, ); sorted=true, by=length)ab = 2abc = 1abcd = 3For custom structs, pass a function that converts the struct to a supported type
julia> using TOMLjulia> struct MyStruct a::Int b::String endjulia> TOML.print(Dict("foo" => MyStruct(5, "bar"))) do x x isa MyStruct && return [x.a, x.b] error("unhandled type $(typeof(x))") endfoo = [5, "bar"]TOML.parse —Functionparse(x::Union{AbstractString, IO})parse(p::Parser, x::Union{AbstractString, IO})Parse the string or streamx, and return the resulting table (dictionary). Throw aParserError upon failure.
See alsoTOML.tryparse.
TOML.parsefile —Functionparsefile(f::AbstractString)parsefile(p::Parser, f::AbstractString)Parse filef and return the resulting table (dictionary). Throw aParserError upon failure.
See alsoTOML.tryparsefile.
TOML.tryparse —Functiontryparse(x::Union{AbstractString, IO})tryparse(p::Parser, x::Union{AbstractString, IO})Parse the string or streamx, and return the resulting table (dictionary). Return aParserError upon failure.
See alsoTOML.parse.
TOML.tryparsefile —Functiontryparsefile(f::AbstractString)tryparsefile(p::Parser, f::AbstractString)Parse filef and return the resulting table (dictionary). Return aParserError upon failure.
See alsoTOML.parsefile.
TOML.print —Functionprint([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})Writedata as TOML syntax to the streamio. If the keyword argumentsorted is set totrue, sort tables according to the function given by the keyword argumentby. If the keyword argumentinline_tables is given, it should be a set of tables that should be printed "inline".
The following data types are supported:AbstractDict,AbstractVector,AbstractString,Integer,AbstractFloat,Bool,Dates.DateTime,Dates.Time,Dates.Date. Note that the integers and floats need to be convertible toFloat64 andInt64 respectively. For other data types, pass the functionto_toml that takes the data types and returns a value of a supported type.
TOML.Parser —TypeParser()Constructor for a TOMLParser. Note that in most cases one does not need to explicitly create aParser but instead one directly use useTOML.parsefile orTOML.parse. Using an explicit parser will however reuse some internal data structures which can be beneficial for performance if a larger number of small files are parsed.
TOML.ParserError —TypeParserErrorType that is returned fromtryparse andtryparsefile when parsing fails. It contains (among others) the following fields:
pos, the position in the string when the error happenedtable, the result that so far was successfully parsedtype, an error type, different for different types of errorsSettings
This document was generated withDocumenter.jl version 1.16.0 onThursday 20 November 2025. Using Julia version 1.12.2.