Juneau supports converting arbitrary POJOs to and from JSON using ultra-efficient serializers and parsers.
The JSON serializer converts POJOs directly to JSON without the need for intermediate DOM objects using a
highly-efficient state machine.
Likewise, the JSON parser creates POJOs directly from JSON without the need for intermediate DOM objects.
The following example shows JSON for a typical bean:
| public class Person {
|
| // Bean properties
| public String name;
| @Swap(TemporalCalendarSwap.IsoInstant.class) public Calendar birthDate;
| public List<Address> addresses;
|
| // Getters/setters omitted
| }
|
| public class Address {
|
| // Bean properties
| public String street, city;
| public StateEnum state;
| public int zip;
| public boolean isCurrent;
|
| // Getters/setters omitted
| }
| Person person = new Person()
| .name("John Smith")
| .birthDate("1946-08-12T00:00:00Z")
| .addresses(
| new Address()
| .street("100 Main Street")
| .city("Anywhereville")
| .state(NY)
| .zip(12345)
| .isCurrent(true);
| );
| {
| "name": "John Smith",
| "birthDate": "1946-08-12T00:00:00Z",
| "addresses": [
| {
| "street": "100 Main Street",
| "city": "Anywhereville",
| "state": "NY",
| "zip": 12345,
| "isCurrent": true
| }
| ]
| }
| {
| name: 'John Smith',
| birthDate: '1946-08-12T00:00:00Z',
| addresses: [
| {
| street: '100 Main Street',
| city: 'Anywhereville',
| state: 'NY',
| zip: 12345,
| isCurrent: true
| }
| ]
| }