Bonjour,
Aujourd'hui je souhaiterais vous présenter mon projet universal-serializer (lien GitHub) pour sérialiser/désérialiser des objets Java à l'aide d'une interface commune Serializer.
L'objectif ? Simplifier le développement. En effet, lorsque vous utilisez des méthodes pour transformer vos objets d'un format vers un autre vous :
- Utilisez souvent plus d'une instruction
- Effectuez des recherches dans la JavaDoc pour trouver la méthode qui convient
- Pouvez oublier de fermer vos flux
Cet API gère actuellement plusieurs formats :
- Binaire, avec 2 implémentations : Sérialisation Java, Google Protocol Buffers
- Fichier, avec 2 implémentations : CSV, Excel (XLS et XLSX)
- Texte, avec 4 implémentations : JWT (JSON Web Tokens), XML (JAXB), Base64, Base64 URL
Présentation de l'interface Serializer :
- serialize(X myObject) : Y Sérialise un objet Java vers un autre format (binaire, texte, ou fichier).
- deserialize(Y myData) : X Désérialise un format de donnée vers un objet Java (opération inverse de serialize())
- sendTo(X myObject, OutputStream out) : void Sérialise un objet Java et l'envoi dans un flux (utile pour du développement réseaux)
- receiveFrom(InputStream in) : X Récupère un objet Java à partir d'un flux (utile pour du développement réseaux)
Voici un exemple d'utilisation pour chaque format :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Sérialisation Java JavaSerializer<MyClass> s = new JavaSerializer<>(); byte[] byteArray = s.serialize(new MyClass(/* init */)); MyClass deserialized = s.deserialize(byteArray);
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Sérialisation Excel ExcelSerializer<MyClass> s = new ExcelSerializer<>(MyClass.class /* , your FileOptions */); Path path = s.serialize(new ArrayList<MyClass>()); List<MyClass> deserialized = s.deserialize(path);
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Sérialisation JWT String SECRET = "546T78UINqqsvfzfs<vs<sdv_-('U87Y89YG87"; JwtSerializer<MyClass> s = new JwtSerializer<>(MyClass.class, Algorithm.HS256, SECRET); String jsonWebToken = s.serialize(new MyClass(/* init */)); MyClass deserialized = s.deserialize(jsonWebToken);
Questions :
1. Que pensez-vous de ce projet ? Vous semble-t-il suffisamment intéressant pour être utilisé dans vos projets ?
2. Quels sont les implémentations que vous souhaiteriez voir apparaitre dans l'API ? (Mis à part JSON, que je ne compte pas implémenter)
3. Si vous aviez à changer les dépendances du pom.xml, mettriez-vous des dépendances en optional true ?
Note : En ce qui concerne le nom du projet, j'ai pensé à une télécommande universelle
Merci pour vos retours
Partager