Poster taggade med ‘serialization’

Tidigare idag fick jag tips från min kollega Mikael Elm om ramverket JSefa som de använder för att skapa fixed length records vid kommunikation med ett legacy-system.

JSefa är ett litet och smidigt ramverk för strömmande serialisering av javaobjekt till XML, CSV och FLR.

Nedanstående exempel visar FLR-användningen av JSefa

Objektet som ska serialiseras

@FlrDataType()
public class Person {
    @FlrField(pos = 1, length = 30)
    private String name;

    @FlrField(pos = 2, length = 10, format = "dd.MM.yyyy", align = Align.RIGHT)
    private Date birthDate;
}

Serialisering

Serializer serializer = FlrIOFactory.createFactory(Person.class).createSerializer();
StringWriter writer = new StringWriter();
serializer.open(writer);

// call serializer.write for every object to serialize...

serializer.close(true);

Resultatet blir då:

Erwin Schmidt                 23.05.1964
Thomas Stumm                  12.03.1979

Deserialisering

Deserializer deserializer = FlrIOFactory.createFactory(Person.class).createDeserializer();
StringReader reader = new StringReader(writer.toString());
deserializer.open(reader);
while (deserializer.hasNext()) {
    Person p = deserializer.next();
    // do something useful with it...
}
deserializer.close(true);

För att serialisera XML eller CSV används liknande konstruktioner med annotationer och Serializers/Deserializers.

JAXB betyder Java Architecture for XML Binding och används för att konvertera POJOs till XML och vice versa. Metoden för att konvertera en POJO till XML kallas för marshalling eller serialisering. Det motsatta, det vill säga att konvertera från XML till en POJO, kallas för unmarshalling eller deserialisering.

I denna artikel visar jag hur man kan använda JAXB för serialisering/deserialisering på ett enkelt sätt med hjälp av ett enhetstest. Exemplet finns att hämta på GitHub – https://github.com/cygni-stacktrace/jaxb-sample.

Läs mer >>