Merge pull request #8227 from catalin-burcea/BAEL-19673

[BAEL-19673] - Move articles out of jackson part 1
This commit is contained in:
Josh Cummings
2019-11-23 11:29:56 -07:00
committed by GitHub
97 changed files with 894 additions and 210 deletions
+11
View File
@@ -0,0 +1,11 @@
## Jackson Annotations
This module contains articles about Jackson annotations.
### Relevant Articles:
- [Guide to @JsonFormat in Jackson](https://www.baeldung.com/jackson-jsonformat)
- [More Jackson Annotations](https://www.baeldung.com/jackson-advanced-annotations)
- [Jackson Annotation Examples](https://www.baeldung.com/jackson-annotations)
- [Jackson – Bidirectional Relationships](https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion)
- [Jackson – Change Name of Field](https://www.baeldung.com/jackson-name-of-property)
- [Jackson Ignore Properties on Marshalling](https://www.baeldung.com/jackson-ignore-properties-on-serialization)
+60
View File
@@ -0,0 +1,60 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>jackson-annotations</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jackson-annotations</name>
<parent>
<groupId>com.baeldung</groupId>
<artifactId>parent-java</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../parent-java</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jsonSchema</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>${rest-assured.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>jackson-annotations</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<properties>
<assertj.version>3.11.0</assertj.version>
<rest-assured.version>3.1.1</rest-assured.version>
</properties>
</project>
@@ -1,4 +1,4 @@
package com.baeldung.jackson.bidirection;
package com.baeldung.jackson.annotation.bidirection;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.bidirection;
package com.baeldung.jackson.annotation.bidirection;
public class ItemWithIgnore {
public int id;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.bidirection;
package com.baeldung.jackson.annotation.bidirection;
import com.fasterxml.jackson.annotation.JsonManagedReference;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.bidirection;
package com.baeldung.jackson.annotation.bidirection;
import java.util.ArrayList;
import java.util.List;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.bidirection;
package com.baeldung.jackson.annotation.bidirection;
import java.util.ArrayList;
import java.util.List;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.bidirection;
package com.baeldung.jackson.annotation.bidirection;
import java.util.ArrayList;
import java.util.List;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.date;
package com.baeldung.jackson.annotation.date;
import java.io.IOException;
import java.text.ParseException;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.date;
package com.baeldung.jackson.annotation.date;
import java.io.IOException;
import java.text.SimpleDateFormat;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.date;
package com.baeldung.jackson.annotation.date;
import java.util.Date;
@@ -1,4 +1,4 @@
package com.baeldung.jackson.date;
package com.baeldung.jackson.annotation.date;
import java.util.Date;
@@ -0,0 +1,41 @@
package com.baeldung.jackson.annotation.deserialization;
import java.io.IOException;
import com.baeldung.jackson.annotation.dtos.ItemWithSerializer;
import com.baeldung.jackson.annotation.dtos.User;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.node.IntNode;
public class ItemDeserializerOnClass extends StdDeserializer<ItemWithSerializer> {
private static final long serialVersionUID = 5579141241817332594L;
public ItemDeserializerOnClass() {
this(null);
}
public ItemDeserializerOnClass(final Class<?> vc) {
super(vc);
}
/**
* {"id":1,"itemNr":"theItem","owner":2}
*/
@Override
public ItemWithSerializer deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
final JsonNode node = jp.getCodec()
.readTree(jp);
final int id = (Integer) ((IntNode) node.get("id")).numberValue();
final String itemName = node.get("itemName")
.asText();
final int userId = (Integer) ((IntNode) node.get("owner")).numberValue();
return new ItemWithSerializer(id, itemName, new User(userId, null));
}
}
@@ -0,0 +1,32 @@
package com.baeldung.jackson.annotation.dtos;
public class Item {
public int id;
public String itemName;
public User owner;
public Item() {
super();
}
public Item(final int id, final String itemName, final User owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
// API
public int getId() {
return id;
}
public String getItemName() {
return itemName;
}
public User getOwner() {
return owner;
}
}
@@ -0,0 +1,36 @@
package com.baeldung.jackson.annotation.dtos;
import com.baeldung.jackson.annotation.deserialization.ItemDeserializerOnClass;
import com.baeldung.jackson.annotation.serialization.ItemSerializerOnClass;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(using = ItemSerializerOnClass.class)
@JsonDeserialize(using = ItemDeserializerOnClass.class)
public class ItemWithSerializer {
public final int id;
public final String itemName;
public final User owner;
public ItemWithSerializer(final int id, final String itemName, final User owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
// API
public int getId() {
return id;
}
public String getItemName() {
return itemName;
}
public User getOwner() {
return owner;
}
}
@@ -0,0 +1,26 @@
package com.baeldung.jackson.annotation.dtos;
public class User {
public int id;
public String name;
public User() {
super();
}
public User(final int id, final String name) {
this.id = id;
this.name = name;
}
// API
public int getId() {
return id;
}
public String getName() {
return name;
}
}

Some files were not shown because too many files have changed in this diff Show More