{title:'JSON Details'}

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:

##### Sample Beans

| 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 | }

##### Sample Code

| 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); | );

##### Normal JSON

| { | "name": "John Smith", | "birthDate": "1946-08-12T00:00:00Z", | "addresses": [ | { | "street": "100 Main Street", | "city": "Anywhereville", | "state": "NY", | "zip": 12345, | "isCurrent": true | } | ] | }

##### Simplified JSON

| { | name: 'John Smith', | birthDate: '1946-08-12T00:00:00Z', | addresses: [ | { | street: '100 Main Street', | city: 'Anywhereville', | state: 'NY', | zip: 12345, | isCurrent: true | } | ] | }