Skip to content

Commit f9e9a90

Browse files
jackson3 docs
1 parent 63beb49 commit f9e9a90

6 files changed

Lines changed: 209 additions & 19 deletions

File tree

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
== Jackson
1+
== Jackson 2
22

33
JSON support using https://github.com/FasterXML/jackson[Jackson] library.
44

@@ -14,7 +14,7 @@ JSON support using https://github.com/FasterXML/jackson[Jackson] library.
1414
.Java
1515
[source, java, role="primary"]
1616
----
17-
import io.jooby.json.JacksonModule;
17+
import io.jooby.jackson.JacksonModule;
1818
1919
{
2020
install(new JacksonModule()); <1>
@@ -34,7 +34,7 @@ import io.jooby.json.JacksonModule;
3434
.Kotlin
3535
[source, kt, role="secondary"]
3636
----
37-
import io.jooby.json.JacksonModule;
37+
import io.jooby.jackson.JacksonModule;
3838
3939
{
4040
install(JacksonModule()) <1>
@@ -62,7 +62,7 @@ Access to default object mapper is available via require call:
6262
.Default object mapper
6363
[source, java, role="primary"]
6464
----
65-
import io.jooby.json.JacksonModule;
65+
import io.jooby.jackson.JacksonModule;
6666
6767
{
6868
install(new JacksonModule());
@@ -76,7 +76,7 @@ import io.jooby.json.JacksonModule;
7676
.Kotlin
7777
[source, kt, role="secondary"]
7878
----
79-
import io.jooby.json.JacksonModule
79+
import io.jooby.jackson.JacksonModule
8080
8181
{
8282
install(JacksonModule())
@@ -90,7 +90,7 @@ You can provide your own `ObjectMapper`:
9090
.Custom ObjectMapper
9191
[source, java, role="primary"]
9292
----
93-
import io.jooby.json.JacksonModule;
93+
import io.jooby.jackson.JacksonModule;
9494
9595
{
9696
ObjectMapper mapper = new ObjectMapper();
@@ -102,7 +102,7 @@ import io.jooby.json.JacksonModule;
102102
.Kotlin
103103
[source, kt, role="secondary"]
104104
----
105-
import io.jooby.json.JacksonModule
105+
import io.jooby.jackson.JacksonModule
106106
107107
{
108108
val mapper = ObjectMapper()
@@ -116,7 +116,7 @@ This allows to configure JacksonModule for doing `xml` processing:
116116
.XmlMapper
117117
[source, java, role="primary"]
118118
----
119-
import io.jooby.json.JacksonModule;
119+
import io.jooby.jackson.JacksonModule;
120120
121121
{
122122
install(new JacksonModule(new XmlMapper()));
@@ -126,19 +126,19 @@ import io.jooby.json.JacksonModule;
126126
.Kotlin
127127
[source, kt, role="secondary"]
128128
----
129-
import io.jooby.json.JacksonModule
129+
import io.jooby.jackson.JacksonModule
130130
131131
{
132132
install(JacksonModule(XmlMapper()))
133133
}
134134
----
135135

136-
If you want `jackson` and `xml` processing then install twice:
136+
If you want `json` and `xml` processing then install twice:
137137

138138
.XmlMapper
139139
[source, java, role="primary"]
140140
----
141-
import io.jooby.json.JacksonModule;
141+
import io.jooby.jackson.JacksonModule;
142142
143143
{
144144
install(new JacksonModule(new ObjectMapper()));
@@ -149,7 +149,7 @@ import io.jooby.json.JacksonModule;
149149
.Kotlin
150150
[source, kt, role="secondary"]
151151
----
152-
import io.jooby.json.JacksonModule
152+
import io.jooby.jackson.JacksonModule
153153
154154
{
155155
install(JacksonModule(ObjectMapper()))
@@ -164,7 +164,7 @@ Jackson module can be provided by a link:{uiVersion}/#extensions-and-services-de
164164
.Provisioning Modules
165165
[source, java, role="primary"]
166166
----
167-
import io.jooby.json.JacksonModule;
167+
import io.jooby.jackson.JacksonModule;
168168
169169
{
170170
install(new JacksonModule().module(MyModule.class);
@@ -174,11 +174,11 @@ import io.jooby.json.JacksonModule;
174174
.Kotlin
175175
[source, kt, role="secondary"]
176176
----
177-
import io.jooby.json.JacksonModule
177+
import io.jooby.jackson.JacksonModule
178178
179179
{
180180
install(JacksonModule().module(MyModule::class.java)
181181
}
182182
----
183183

184-
At startup time Jooby ask to dependency injection framework to provide a `MyModule` instance.
184+
At startup time Jooby ask dependency injection framework to provide a `MyModule` instance.
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
== Jackson 3
2+
3+
JSON support using https://github.com/FasterXML/jackson[Jackson 3] library.
4+
5+
=== Usage
6+
7+
1) Add the dependency:
8+
9+
[dependency, artifactId="jooby-jackson3"]
10+
.
11+
12+
2) Install and encode/decode JSON
13+
14+
.Java
15+
[source, java, role="primary"]
16+
----
17+
import io.jooby.jackson3.Jackson3Module;
18+
19+
{
20+
install(new Jackson3Module()); <1>
21+
22+
get("/", ctx -> {
23+
MyObject myObject = ...;
24+
return myObject; <2>
25+
});
26+
27+
post("/", ctx -> {
28+
MyObject myObject = ctx.body(MyObject.class); <3>
29+
...
30+
});
31+
}
32+
----
33+
34+
.Kotlin
35+
[source, kt, role="secondary"]
36+
----
37+
import io.jooby.jackson3.Jackson3Module;
38+
39+
{
40+
install(Jackson3Module()) <1>
41+
42+
get("/") {
43+
val myObject = ...;
44+
myObject <2>
45+
}
46+
47+
post("/") {
48+
val myObject = ctx.body<MyObject>() <3>
49+
...
50+
}
51+
}
52+
----
53+
54+
<1> Install Jackson
55+
<2> Use Jackson to encode arbitrary object as JSON
56+
<3> Use Jackson to decode JSON to Java object. Client must specify the `Content-Type: application/json` header
57+
58+
=== Working with ObjectMapper
59+
60+
Access to default object mapper is available via require call:
61+
62+
.Default object mapper
63+
[source, java, role="primary"]
64+
----
65+
import io.jooby.jackson3.Jackson3Module;
66+
67+
{
68+
install(new Jackson3Module());
69+
70+
ObjectMapper mapper = require(ObjectMapper.class);
71+
...
72+
}
73+
----
74+
75+
.Kotlin
76+
[source, kt, role="secondary"]
77+
----
78+
import io.jooby.jackson3.Jackson3Module
79+
80+
{
81+
install(Jackson3Module())
82+
83+
val mapper = require<ObjectMapper>()
84+
}
85+
----
86+
87+
You can provide your own `ObjectMapper`:
88+
89+
.Custom ObjectMapper
90+
[source, java, role="primary"]
91+
----
92+
import io.jooby.jackson3.Jackson3Module;
93+
94+
{
95+
ObjectMapper mapper = new ObjectMapper();
96+
97+
install(new Jackson3Module(mapper));
98+
}
99+
----
100+
101+
.Kotlin
102+
[source, kt, role="secondary"]
103+
----
104+
import io.jooby.jackson3.Jackson3Module
105+
106+
{
107+
val mapper = ObjectMapper()
108+
109+
install(Jackson3Module(mapper))
110+
}
111+
----
112+
113+
This allows to configure `Jackson3Module` for doing `xml` processing:
114+
115+
.XmlMapper
116+
[source, java, role="primary"]
117+
----
118+
import io.jooby.jackson3.Jackson3Module;
119+
120+
{
121+
install(new Jackson3Module(new XmlMapper()));
122+
}
123+
----
124+
125+
.Kotlin
126+
[source, kt, role="secondary"]
127+
----
128+
import io.jooby.jackson3.Jackson3Module
129+
130+
{
131+
install(Jackson3Module(XmlMapper()))
132+
}
133+
----
134+
135+
If you want `json` and `xml` processing then install twice:
136+
137+
.XmlMapper+JsonMapper
138+
[source, java, role="primary"]
139+
----
140+
import io.jooby.jackson3.Jackson3Module;
141+
142+
{
143+
install(new Jackson3Module(new JsonMapper()));
144+
install(new Jackson3Module(new XmlMapper()));
145+
}
146+
----
147+
148+
.Kotlin
149+
[source, kt, role="secondary"]
150+
----
151+
import io.jooby.jackson3.Jackson3Module
152+
153+
{
154+
install(Jackson3Module(JsonMapper()))
155+
install(Jackson3Module(XmlMapper()))
156+
}
157+
----
158+
159+
=== Provisioning Jackson Modules
160+
161+
Jackson module can be provided by a link:{uiVersion}/#extensions-and-services-dependency-injection[dependency injection] framework.
162+
163+
.Provisioning Modules
164+
[source, java, role="primary"]
165+
----
166+
import io.jooby.jackson3.Jackson3Module;
167+
168+
{
169+
install(new Jackson3Module().module(MyModule.class);
170+
}
171+
----
172+
173+
.Kotlin
174+
[source, kt, role="secondary"]
175+
----
176+
import io.jooby.jackson3.Jackson3Module
177+
178+
{
179+
install(Jackson3Module().module(MyModule::class.java)
180+
}
181+
----
182+
183+
At startup time Jooby asks dependency injection framework to provide a `MyModule` instance.

docs/asciidoc/modules/modules.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ Available modules are listed next.
4444

4545
=== JSON
4646
* link:{uiVersion}/modules/gson[Gson]: Gson module for Jooby.
47-
* link:{uiVersion}/modules/jackson[Jackson]: Jackson module for Jooby.
47+
* link:{uiVersion}/modules/jackson2[Jackson2]: Jackson2 module for Jooby.
48+
* link:{uiVersion}/modules/jackson3[Jackson3]: Jackson3 module for Jooby.
4849
* link:{uiVersion}/modules/yasson[JSON-B]: JSON-B module for Jooby.
4950
* link:{uiVersion}/modules/avaje-jsonb[Avaje-JsonB]: Avaje-JsonB module for Jooby.
5051

docs/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<properties>
1212
<application.class>io.jooby.adoc.DocApp</application.class>
13-
<jooby.version>4.0.7</jooby.version>
13+
<jooby.version>4.0.15</jooby.version>
1414
<maven.compiler.source>17</maven.compiler.source>
1515
<maven.compiler.target>17</maven.compiler.target>
1616
<maven.compiler.release>17</maven.compiler.release>

modules/jooby-jackson/src/main/java/io/jooby/jackson/JacksonModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import io.jooby.output.Output;
3636

3737
/**
38-
* JSON module using Jackson: https://jooby.io/modules/jackson.
38+
* JSON module using Jackson: https://jooby.io/modules/jackson2.
3939
*
4040
* <p>Usage:
4141
*
@@ -72,7 +72,7 @@
7272
* }
7373
* }</pre>
7474
*
75-
* Complete documentation is available at: https://jooby.io/modules/jackson.
75+
* Complete documentation is available at: https://jooby.io/modules/jackson2.
7676
*
7777
* @author edgar
7878
* @since 2.0.0

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,12 @@
318318
<version>${jooby.version}</version>
319319
</dependency>
320320

321+
<dependency>
322+
<groupId>io.jooby</groupId>
323+
<artifactId>jooby-jackson3</artifactId>
324+
<version>${jooby.version}</version>
325+
</dependency>
326+
321327
<dependency>
322328
<groupId>io.jooby</groupId>
323329
<artifactId>jooby-gson</artifactId>

0 commit comments

Comments
 (0)