{title:'Part Marshallers', updated:'8.1.0,9.0.0'}

Juneau comes with three basic marshall types for serializing and parsing Header, Query, Form, and Path parts:

- {@link oaj.httppart.HttpPartSerializer}
  - {@link oaj.httppart.SimplePartSerializer} - Serializes directly to strings.
  - {@link oaj.uon.UonSerializer} - Serializes to UON notation.
    - {@link oaj.oapi.OpenApiSerializer} - Serializes using Open-API schema rules.
- {@link oaj.httppart.HttpPartParser}
  - {@link oaj.httppart.SimplePartParser} - Parses directly from strings.
  - {@link oaj.uon.UonParser} - Parses from UON notation.
    - {@link oaj.oapi.OpenApiParser} - Parses using Open-API schema rules.

By default, the REST API uses the OpenAPI serializer and parser which allows for schema-based marshalling. You also have the option to use UON marshalling which is schema-less but allows for JSON-equivalent data structures (object/array/primitives/...) using URL-encoding notation. This can be done by overriding the part marshallers through the following APIs:

- {@link oajr.annotation.Rest}
  - {@link oajr.annotation.Rest#partSerializer() partSerializer}
  - {@link oajr.annotation.Rest#partParser() partParser}
- {@link oajr.RestContext.Builder}
  - {@link oajr.RestContext.Builder#createPartSerializer(BeanStore,Supplier) createPartSerializer(BeanStore,Supplier)}
  - {@link oajr.RestContext.Builder#createPartParser(BeanStore,Supplier) createPartParser(BeanStore,Supplier)}

The OpenAPI marshallers themselves also have the ability to support UON notation for individual parts via the schema itself:

| @Query(..., schema=@Schema(format="uon")) Map<Integer,MyBean> myMap