{title:'Comparison with Jackson', updated:'9.0.0'}

Juneau was developed independently from Jackson but shares many of the same features and capabilities. Whereas Jackson was created to work primarily with JSON, Juneau was created to work for multiple languages. Therefore, the terminology and annotations in Juneau are similar but language-agnostic.

The following charts describe equivalent features between the two libraries:

Annotations
JacksonJuneau
@JsonGetter
@JsonSetter
{@link oaj.annotation.Beanp @Beanp}
@JsonAnyGetter
@JsonAnySetter
{@link oaj.annotation.Beanp#name() @Beanp(name="*")}
@JsonIgnore
@JsonIgnoreType
{@link oaj.annotation.BeanIgnore @BeanIgnore}
@JsonIgnoreProperties({...}) {@link oaj.annotation.Bean#excludeProperties @Bean(excludeProperties|xp)}
@JsonAutoDetect(fieldVisibility=...) No equivalent annotation but can be controlled via:
{@link oaj.BeanContext.Builder#beanFieldVisibility(Visibility)}
{@link oaj.BeanContext.Builder#beanMethodVisibility(Visibility)}
@JsonCreator
@JsonProperty
{@link oaj.annotation.Beanc @Beanc}
@JacksonInject No equivalent.
@JsonSerialize
@JsonDeserialize
Juneau uses swaps to convert non-serializable object to serializable forms:
{@link oaj.annotation.Swap @Swap}
@JsonInclude No equivalent annotation but can be controlled via various settings:
{@link oaj.BeanContext}
{@link oaj.serializer.Serializer}
@JsonPropertyOrder {@link oaj.annotation.Bean#properties @Bean(properties="...")}
{@link oaj.annotation.Bean#sort @Bean(sort=x)}
@JsonValue
@JsonRawValue
Can be replicated using swaps with Reader swapped values.