One of [Jackson](../../../..jackson) [Misec. datatype modules](../../..). Supports JSON serialization and deserialization of ["org.json" JSON library](http://json.org/java) datatypes, most commonly seen in Android SDK. ## Usage ### Maven dependency To use module on Maven-based projects, use following dependency: ```xml <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda-money</artifactId> <version>2.11.0</version> </dependency> ``` (or whatever version is most up-to-date at the moment) ### Registering module Like all standard Jackson modules (libraries that implement Module interface), registration is done as follows (Jackson 2.x up to 2.9) ```java // import com.fasterxml.jackson.datatype.jodamoney.JodaMoneyModule; ObjectMapper mapper = new ObjectMapper() .registerModule(new JodaMoneyModule()); ``` OR, the new method added in 2.10 (old method will work with 2.x but not 3.x): ```java ObjectMapper mapper = JsonMapper.builder() .addModule(new JodaMoneyModule()) .build(); ``` after which functionality is available with all normal Jackson operations, like: ```java Money amount = mapper.readValue("{\"currency\":\"EUR\",\"amount\":19.99}", Money.class) assertEquals("EUR", amount.getCurrencyUnit().getCode()) assertEquals(BigDecimal.valueOf(19.99), amount.getAmount()) ``` ### Configuring the module #### Amount representation Representation of the amount for the (de)serialized `Money` instances can be configured via the `JodaMoneyModule.withAmountRepresentation(AmountRepresentation)` method. The available representations are: * `DECIMAL_NUMBER` - the default; amounts are (de)serialized as decimal numbers equal to the monetary amount, e.g. `12.34` for EUR 12.34, * `DECIMAL_STRING` - amounts are (de)serialized as strings containing decimal number equal to the monetary amount, e.g. `"12.34"` for EUR 12.34, * `MINOR_CURRENCY_UNIT` - amounts are (de)serialized as long integers equal to the monetary amount expressed in minor currency unit, e.g. `1234` for EUR 12.34, `12345` for KWD 12.345 or `12` for JPY 12. Example usage: ```java ObjectMapper mapper = JsonMapper.builder() .addModule(new JodaMoneyModule().withAmountRepresentation(AmountRepresentation.DECIMAL_STRING)) .build(); ```