https://github.com/agrison/jtoml
TOML for Java
https://github.com/agrison/jtoml
Last synced: over 1 year ago
JSON representation
TOML for Java
- Host: GitHub
- URL: https://github.com/agrison/jtoml
- Owner: agrison
- License: mit
- Created: 2013-02-24T13:25:39.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2021-11-04T11:46:05.000Z (over 4 years ago)
- Last Synced: 2024-04-16T07:13:10.542Z (about 2 years ago)
- Language: Java
- Size: 367 KB
- Stars: 48
- Watchers: 7
- Forks: 13
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
TOML for Java
===
This is a parser for Tom Preson-Werner's (@mojombo) [TOML](https://github.com/toml-lang/toml) markup language, using Java.
[](https://travis-ci.org/agrison/jtoml)
Get it
----
jtoml is published in the sonatype nexus repository.
In order to use it, you may add this repository in your `pom.xml`:
```xml
jtoml
https://raw.github.com/agrison/jtoml/mvn-repo/
```
Add the jtoml dependency:
```xml
me.grison
jtoml
1.1.1
```
**Note**: The library is hosted on GitHub.
Usage
----
### Parsing
```java
Toml toml = Toml.parse("pi = 3.14\nfoo = \"bar\""); // parse a String
toml = Toml.parse(new File("foo.toml")); // or a file
```
### Getting values
The `Toml` class support different types of getters so that you can retrieve a specific type or the underlying `Object` without casting.
```java
// get different types
toml.get("foo"); // Object
toml.getString("foo"); // String
toml.getBoolean("foo"); // Boolean
toml.getDate("foo"); // Calendar
toml.getDouble("foo"); // Double
toml.getLong("foo"); // Long
toml.getList("foo"); // List
toml.getMap("foo"); // Map
```
### Mapping custom types
You can map a custom type from an entire TOML String or part of it.
Let's say you would like to map the following TOML to a `Player` entity.
```toml
[player]
nickName = "foo"
score = 42
```
You could do it as simple as following:
```java
// or Custom objects
public class Player {
String name;
Long score;
}
Toml toml = Toml.parse("[player]\nname = \"foo\"\nscore = 42");
Player player = toml.getAs("player", Player.class);
player.name; // "foo"
player.score; // 42L
```
**Note:** Supported types are `Long`, `String`, `Double`, `Boolean`, `Calendar`, `List`, `Map` or Objects having the pre-cited types only.
### Serialization
JToml supports also serialization. Indeed, you can serialize a custom type to a String having the TOML format representing the original object.
Imagine the following custom Objects:
```java
public class Stats {
Long maxSpeed;
Double weight;
// Constructors
}
public class Car {
String brand;
String model;
Stats stats;
Boolean legendary;
Calendar date;
List options;
// Constructors
}
Car f12Berlinetta = new Car("Ferrari", "F12 Berlinetta", true, "2012-02-29",
360, 1525.5, Arrays.asList("GPS", "Leather", "Nitro")
);
String toml = Toml.serialize("f12b", f12Berlinetta);
```
The call to `Toml.serialize()` will produce the following TOML format:
```toml
[f12b]
brand = "Ferrari"
model = "F12 Berlinetta"
legendary = true
date = 2012-02-29T00:00:00Z
options = ["GPS", "Leather", "Nitro"]
[f12b.stats]
maxSpeed = 347
weight = 1525.5
```
You can also serialize the current instance of a `Toml` object:
```java
Toml toml = Toml.parse("[player]\nname = \"foo\"\nscore = 42");
toml.serialize();
```
Will produce the following TOML String
```toml
[player]
name = "foo"
score = 42
```
**Note:** Like for custom types above, supported types are `Long`, `String`, `Double`, `Boolean`, `Calendar`, `List`, `Map` or Objects having the pre-cited types only.
### Support
Should normally support everything in the Toml Spec.
License
-----
[MIT License (MIT)](http://opensource.org/licenses/mit-license.php).
See the [`LICENSE`](https://github.com/agrison/jtoml/blob/master/LICENSE) file.