diff --git a/json-2/pom.xml b/json-2/pom.xml
index e0295af59b..73c26e8259 100644
--- a/json-2/pom.xml
+++ b/json-2/pom.xml
@@ -49,6 +49,66 @@
commons-lang3
3.9
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.11.0
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.11.0
+
+
+ com.io-informatics.oss
+ jackson-jsonld
+ 0.1.1
+
+
+ jackson-databind
+ com.fasterxml.jackson.core
+
+
+ jackson-annotations
+ com.fasterxml.jackson.core
+
+
+ jackson-core
+ com.fasterxml.jackson.core
+
+
+ jsonld-java
+ com.github.jsonld-java
+
+
+
+
+ de.escalon.hypermedia
+ hydra-jsonld
+ 0.4.2
+
+
+ jackson-databind
+ com.fasterxml.jackson.core
+
+
+
+
+ com.github.jsonld-java
+ jsonld-java
+ 0.13.0
+
+
+ jackson-core
+ com.fasterxml.jackson.core
+
+
+ jackson-databind
+ com.fasterxml.jackson.core
+
+
+
0.9.23
diff --git a/json-2/src/main/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationExample.java b/json-2/src/main/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationExample.java
new file mode 100644
index 0000000000..b80769b408
--- /dev/null
+++ b/json-2/src/main/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationExample.java
@@ -0,0 +1,40 @@
+package com.baeldung.jsonld.deserialization.jsonldjava.jackson;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.jsonldjava.core.JsonLdOptions;
+import com.github.jsonldjava.core.JsonLdProcessor;
+import com.github.jsonldjava.utils.JsonUtils;
+
+public class JacksonDeserializationExample {
+ public static void main(String[] args) throws IOException {
+ String exampleJsonld ="{" +
+ " \"@context\": {" +
+ " \"@vocab\": \"http://schema.org/\"," +
+ " \"knows\": {" +
+ " \"@type\": \"@id\"" +
+ " }" +
+ " }," +
+ " \"@type\": \"Person\"," +
+ " \"@id\": \"http://example.com/person/1234\"," +
+ " \"name\": \"Example Name\"," +
+ " \"knows\": \"http://example.com/person/2345\"" +
+ "}";
+
+ Object jsonObject = JsonUtils.fromString(exampleJsonld);
+ Object compact = JsonLdProcessor.compact(jsonObject, new HashMap(), new JsonLdOptions());
+ String compactContent = JsonUtils.toString(compact);
+
+ System.out.println(JsonUtils.toPrettyString(compact));
+
+ ObjectMapper objectMapper = new ObjectMapper();
+ JacksonExamplePerson person = objectMapper.readValue(compactContent, JacksonExamplePerson.class);
+
+ System.out.println(person.id);
+ System.out.println(person.name);
+ System.out.println(person.knows.id);
+ }
+}
diff --git a/json-2/src/main/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonExamplePerson.java b/json-2/src/main/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonExamplePerson.java
new file mode 100644
index 0000000000..2e9f38e665
--- /dev/null
+++ b/json-2/src/main/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonExamplePerson.java
@@ -0,0 +1,19 @@
+package com.baeldung.jsonld.deserialization.jsonldjava.jackson;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class JacksonExamplePerson {
+ @JsonProperty("@id")
+ public String id;
+ @JsonProperty("http://schema.org/name")
+ public String name;
+ @JsonProperty("http://schema.org/knows")
+ public Link knows;
+
+ public class Link {
+ @JsonProperty("@id")
+ public String id;
+ }
+}
diff --git a/json-2/src/main/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldExamplePerson.java b/json-2/src/main/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldExamplePerson.java
new file mode 100644
index 0000000000..16b2199a73
--- /dev/null
+++ b/json-2/src/main/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldExamplePerson.java
@@ -0,0 +1,15 @@
+package com.baeldung.jsonld.serialization.hydrajsonld;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import de.escalon.hypermedia.hydra.mapping.Expose;
+import de.escalon.hypermedia.hydra.mapping.Vocab;
+
+@Vocab("http://example.com/vocab/")
+@Expose("person")
+public class HydraJsonldExamplePerson {
+ @JsonProperty("@id")
+ public String id;
+ @Expose("fullName")
+ public String name;
+}
diff --git a/json-2/src/main/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationExample.java b/json-2/src/main/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationExample.java
new file mode 100644
index 0000000000..3d3531b0b5
--- /dev/null
+++ b/json-2/src/main/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationExample.java
@@ -0,0 +1,52 @@
+package com.baeldung.jsonld.serialization.hydrajsonld;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.BeanDescription;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
+import com.fasterxml.jackson.databind.ser.std.BeanSerializerBase;
+
+import de.escalon.hypermedia.hydra.serialize.JacksonHydraSerializer;
+
+public class HydraJsonldSerializationExample {
+ public static void main(String[] args) throws IOException {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ mapper.registerModule(getJacksonHydraSerializerModule());
+
+ HydraJsonldExamplePerson person = new HydraJsonldExamplePerson();
+ person.id = "http://example.com/person/1234";
+ person.name = "Example Name";
+
+ System.out.println(mapper.writerWithDefaultPrettyPrinter()
+ .writeValueAsString(person));
+ }
+
+ public static SimpleModule getJacksonHydraSerializerModule() {
+ return new SimpleModule() {
+
+ @Override
+ public void setupModule(SetupContext context) {
+ super.setupModule(context);
+
+ context.addBeanSerializerModifier(new BeanSerializerModifier() {
+
+ @Override
+ public JsonSerializer> modifySerializer(SerializationConfig config, BeanDescription beanDesc, JsonSerializer> serializer) {
+
+ if (serializer instanceof BeanSerializerBase) {
+ return new JacksonHydraSerializer((BeanSerializerBase) serializer);
+ } else {
+ return serializer;
+ }
+ }
+ });
+ }
+ };
+ }
+}
diff --git a/json-2/src/main/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationExample.java b/json-2/src/main/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationExample.java
new file mode 100644
index 0000000000..6a1acee1b8
--- /dev/null
+++ b/json-2/src/main/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationExample.java
@@ -0,0 +1,25 @@
+package com.baeldung.jsonld.serialization.jacksonjsonld;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import ioinformarics.oss.jackson.module.jsonld.HydraCollection;
+import ioinformarics.oss.jackson.module.jsonld.JsonldGraph;
+import ioinformarics.oss.jackson.module.jsonld.JsonldModule;
+import ioinformarics.oss.jackson.module.jsonld.JsonldResource;
+
+public class JacksonJsonLdSerializationExample {
+ public static void main(String[] args) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.registerModule(new JsonldModule());
+
+ JacksonJsonldExamplePerson person = new JacksonJsonldExamplePerson();
+
+ JsonldResource jsonldResource = JsonldResource.Builder.create()
+ .build(person);
+
+ System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
+ .writeValueAsString(jsonldResource));
+ }
+}
diff --git a/json-2/src/main/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonldExamplePerson.java b/json-2/src/main/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonldExamplePerson.java
new file mode 100644
index 0000000000..a3161ba1d3
--- /dev/null
+++ b/json-2/src/main/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonldExamplePerson.java
@@ -0,0 +1,17 @@
+package com.baeldung.jsonld.serialization.jacksonjsonld;
+
+import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldId;
+import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldLink;
+import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldNamespace;
+import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldProperty;
+import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldType;
+
+@JsonldNamespace(name = "s", uri = "http://schema.org/")
+@JsonldLink(rel = "s:knows", name = "knows", href = "http://example.com/person/2345")
+@JsonldType("s:Person")
+class JacksonJsonldExamplePerson {
+ @JsonldId
+ public String id = "http://example.com/person/1234";
+ @JsonldProperty("s:name")
+ public String name = "Example Name";
+}