ODIN

.odn

Fast, Easy-to-use and Customizable Java object to text serialization

Latest stable version : Odin-1.2.c

Use for data storage

Odin can serialize all types of objects fast and efficiently without the need of configuration or code modification.


The odn format contains 3 types of entries to provide a simple export even for complex objects like Map.

id = "084aed6d-62f0-4196-a7d2-04f0c1e69cb6"
a map = {
    5 : "value for 5"
    10 : "value for 10"
}

Odin comes with the possibility to indent or compress the output result, both modes use the same reader.

{a string="In short format line breaks are escape",a int=1}

Use for configuration files

Use the default Odin elements to read and write configuration files of your application.


The odn format manages comments and blank lines in order to create an easy to read export.

# Empty lines can be inserted between or around comments
 
a boolean = true
a node = {
    # Comments and blank lines are kept during the rewriting
    a text = "
        Odin can also read and write
        Multilines String like this
        containing two \n
    "
}

Manage generic types

The strategy of Odn is to always know the object instance type, so you can write an object containing abstract or parameterized field types and get the right object type on deserialization.


Basically, when generic type and object type do not match, Odin writes an additional tag with the type name. This type can also be a registered alias to make it easier to read.

{
    # Field declaration : private Object date;
    date = <local datetime> "2018-02-25 21:05:30"
 
    # Field declaration : private AbstractObject<LocalDateTime> anObject;
    # AbstractObject contains one field ( T value )
    anObject = <com.newpixelcoffee.odin.AnObject> {
        value = "2018-02-25 21:05:30"
    }
}

A powerful Java library

Odin offers many ways to serialize and deserialize objects and different customization possibilities.

  • Serialize or deserialize objects in one line

  • Handle bidirectional and hierarchical references

  • Adapters to create custom serializations

  • Annotations to rename or comment class fields

  • Annotations to change a field adapter

Download

Gradle
dependencies {
    implementation 'com.newpixelcoffee.odin:odin:1.2.+'
}
Maven
<dependency>
    <groupId>com.newpixelcoffee.odin</groupId>
    <artifactId>odin</artifactId>
    <version>1.2.+</version>
</dependency>
Manual download
Odin-1.2.c.zip

The version is composed as follows: major.minor.internal


An internal change can be a performance improvement or a fix.



More
Documentation Report an issue