Search code examples
javaparsingdeserializationtoml

How to parse TOML document with Java


In my Java app I get a TOML document from REST service response as String and I look how to parse it and convert to Java objects.

Ideally I'd like to use some existing mapper library for deserialization, something like Jackson or Gson for JSON objects. Are there any options in Java ecosystem for that?


Solution

  • There are several libraries to work with TOML files in Java, such as mwanji/toml4j and tomlj/tomlj. The toml4j looks more maintained and has the ability to map the TOML file to your POJO classes, so it should perfectly match your needs.

    From its documentation:

    Toml#to(Class<T>) maps a Toml instance to the given class.

    TOML file example:

    name = "Mwanji Ezana"
    
    [address]
      street = "123 A Street"
      city = "AnyVille"
      
    [contacts]
      "email address" = "[email protected]"
    

    POJO classes example:

    class Address {
      String street;
      String city;
    }
    
    class User {
      String name;
      Address address;
      Map<String, Object> contacts;
    }
    

    How to map TOML file to POJO classes:

    User user = new Toml().read(tomlFile).to(User.class);
    
    assert user.name.equals("Mwanji Ezana");
    assert user.address.street.equals("123 A Street");
    assert user.contacts.get("\"email address\"").equals("[email protected]");