Skip to content

Commit 82fc8cf

Browse files
sunilmogadatiEugen
authored andcommitted
BAEL-245: Add Enum serialization example (eugenp#970)
* Add NDC and JBoss Logging to the demo application * NDC for Log4j, Log4j2 and JBoss Logging * Simplify NDC example by making it a single operation instead of two * Make NDC example as RestController, Use JBoss Logging only as a logging bridge * Fix merge conflicts in pull request - log-mdc pom.xml updated * BAEL-445 Update to Spring security SpEL example * BAEL-445: Change tabs to spaces in the updated code * BAEL-245: Add Enum Serialization exmaple * BAEL-245: Remove the folder jackson/src/test/java/com/baeldung/jackson/dtos/withEnum as the example is not used anymore
1 parent e8a9b60 commit 82fc8cf

10 files changed

Lines changed: 109 additions & 284 deletions

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.baeldung.jackson.enums;
2+
3+
import com.baeldung.jackson.serialization.DistanceSerializer;
4+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
5+
6+
/**
7+
* Use @JsonFormat to handle representation of Enum as JSON (available since Jackson 2.1.2)
8+
* Use @JsonSerialize to configure a custom Jackson serializer
9+
*/
10+
// @JsonFormat(shape = JsonFormat.Shape.OBJECT)
11+
@JsonSerialize(using = DistanceSerializer.class)
12+
public enum Distance {
13+
KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001);
14+
15+
private String unit;
16+
private final double meters;
17+
18+
private Distance(String unit, double meters) {
19+
this.unit = unit;
20+
this.meters = meters;
21+
}
22+
23+
/**
24+
* Use @JsonValue to control marshalling output for an enum
25+
*/
26+
// @JsonValue
27+
public double getMeters() {
28+
return meters;
29+
}
30+
31+
public String getUnit() {
32+
return unit;
33+
}
34+
35+
public void setUnit(String unit) {
36+
this.unit = unit;
37+
}
38+
39+
/**
40+
* Usage example: Distance.MILE.convertFromMeters(1205.5);
41+
*/
42+
public double convertFromMeters(double distanceInMeters) {
43+
return distanceInMeters / meters;
44+
45+
}
46+
47+
/**
48+
* Usage example: Distance.MILE.convertToMeters(0.5);
49+
*/
50+
public double convertToMeters(double distanceInMeters) {
51+
return distanceInMeters * meters;
52+
}
53+
54+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.baeldung.jackson.serialization;
2+
3+
import java.io.IOException;
4+
5+
import com.baeldung.jackson.enums.Distance;
6+
import com.fasterxml.jackson.core.JsonGenerator;
7+
import com.fasterxml.jackson.core.JsonProcessingException;
8+
import com.fasterxml.jackson.databind.SerializerProvider;
9+
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
10+
11+
public class DistanceSerializer extends StdSerializer<Distance> {
12+
13+
private static final long serialVersionUID = 1376504304439963619L;
14+
15+
public DistanceSerializer() {
16+
super(Distance.class);
17+
}
18+
19+
public DistanceSerializer(Class<Distance> t) {
20+
super(t);
21+
}
22+
23+
public void serialize(Distance distance, JsonGenerator generator, SerializerProvider provider) throws IOException, JsonProcessingException {
24+
generator.writeStartObject();
25+
generator.writeFieldName("name");
26+
generator.writeNumber(distance.name());
27+
generator.writeFieldName("unit");
28+
generator.writeString(distance.getUnit());
29+
generator.writeFieldName("meters");
30+
generator.writeNumber(distance.getMeters());
31+
generator.writeEndObject();
32+
}
33+
}

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/MyDtoWithEnum.java

Lines changed: 0 additions & 57 deletions
This file was deleted.

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/MyDtoWithEnumCustom.java

Lines changed: 0 additions & 57 deletions
This file was deleted.

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/TypeEnum.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/TypeEnumSimple.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/TypeEnumWithCustomSerializer.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/TypeEnumWithValue.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

jackson/src/test/java/com/baeldung/jackson/dtos/withEnum/TypeSerializer.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)