javaobj-py3 ########### .. image:: https://img.shields.io/pypi/v/javaobj-py3.svg :target: https://pypi.python.org/pypi/javaobj-py3/ :alt: Latest Version .. image:: https://img.shields.io/pypi/l/javaobj-py3.svg :target: https://pypi.python.org/pypi/javaobj-py3/ :alt: License .. image:: https://travis-ci.org/tcalmant/python-javaobj.svg?branch=master :target: https://travis-ci.org/tcalmant/python-javaobj :alt: Travis-CI status .. image:: https://coveralls.io/repos/tcalmant/python-javaobj/badge.svg?branch=master :target: https://coveralls.io/r/tcalmant/python-javaobj?branch=master :alt: Coveralls status *python-javaobj* is a python library that provides functions for reading and writing (writing is WIP currently) Java objects serialized or will be deserialized by ``ObjectOutputStream``. This form of object representation is a standard data interchange format in Java world. The ``javaobj`` module exposes an API familiar to users of the standard library ``marshal``, ``pickle`` and ``json`` modules. About this repository ===================== This project is a fork of *python-javaobj* by Volodymyr Buell, originally from `Google Code `_ and now hosted on `GitHub `_. This fork intends to work both on Python 2.7 and Python 3.4+. Compatibility Warning: object transformer ----------------------------------------- As of version 0.2.0, the notion of *object transformer* from the original project as been replaced by an *object creator*. The *object creator* is called before the deserialization. This allows to store the reference of the converted object before deserializing it, and avoids a mismatch between the referenced object and the transformed one. Compatibility Warning: bytes arrays ----------------------------------- As of version 0.2.3, bytes arrays are loaded as a ``bytes`` object instead of an array of integers. Features ======== * Java object instance unmarshaling * Java classes unmarshaling * Primitive values unmarshaling * Automatic conversion of Java Collections to python ones (``HashMap`` => ``dict``, ``ArrayList`` => ``list``, etc.) * Basic marshalling of simple Java objects Requirements ============ * Python >= 2.7 or Python >= 3.4 * Maven 2+ (for building test data of serialized objects. You can skip it if you do not plan to run ``tests.py``) Usage ===== Unmarshalling of Java serialised object: .. code-block:: python import javaobj jobj = self.read_file("obj5.ser") pobj = javaobj.loads(jobj) print(pobj) Or, you can use Unmarshaller object directly: .. code-block:: python import javaobj marshaller = javaobj.JavaObjectUnmarshaller(open("objCollections.ser")) pobj = marshaller.readObject() self.assertEqual(pobj.value, 17) self.assertTrue(pobj.next) pobj = marshaller.readObject()