Bird
Raised Fist0
Spring Bootframework~10 mins

JSON serialization with Jackson in Spring Boot - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to annotate a Java class for JSON serialization using Jackson.

Spring Boot
import com.fasterxml.jackson.annotation.[1];

public class User {
    private String name;
    private int age;

    @JsonProperty("user_name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
Drag options to blanks, or click blank then click option'
AJsonInclude
BJsonIgnore
CJsonProperty
DJsonFormat
Attempts:
3 left
💡 Hint
Common Mistakes
Using @JsonIgnore instead of @JsonProperty will hide the field from JSON.
Confusing @JsonInclude with @JsonProperty.
2fill in blank
medium

Complete the code to ignore a field during JSON serialization.

Spring Boot
import com.fasterxml.jackson.annotation.[1];

public class Product {
    private String name;

    @JsonIgnore
    private double cost;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getCost() {
        return cost;
    }

    public void setCost(double cost) {
        this.cost = cost;
    }
}
Drag options to blanks, or click blank then click option'
AJsonIgnore
BJsonProperty
CJsonInclude
DJsonFormat
Attempts:
3 left
💡 Hint
Common Mistakes
Using @JsonProperty instead of @JsonIgnore will not hide the field.
Forgetting to import the correct annotation.
3fill in blank
hard

Fix the error in the code to include non-null fields only during JSON serialization.

Spring Boot
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

@JsonInclude(Include.[1])
public class Order {
    private String id;
    private String description;

    // getters and setters
}
Drag options to blanks, or click blank then click option'
ANON_NULL
BALWAYS
CNON_EMPTY
DNON_DEFAULT
Attempts:
3 left
💡 Hint
Common Mistakes
Using ALWAYS will include all fields, even null ones.
Using NON_EMPTY excludes empty collections too, which may not be desired.
4fill in blank
hard

Fill both blanks to format a date field in JSON serialization.

Spring Boot
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    @JsonFormat(shape = JsonFormat.Shape.[1], pattern = "[2]")
    private Date eventDate;

    // getters and setters
}
Drag options to blanks, or click blank then click option'
ASTRING
Byyyy-MM-dd
Cyyyy/MM/dd
DNUMBER
Attempts:
3 left
💡 Hint
Common Mistakes
Using shape=NUMBER will serialize date as timestamp.
Using wrong date pattern will cause parsing errors.
5fill in blank
hard

Fill all three blanks to create a custom serializer for a field.

Spring Boot
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;

public class User {
    @JsonSerialize(using = [1].class)
    private String password;

    // getters and setters
}

class [2] extends StdSerializer<String> {
    public [3]() {
        super(String.class);
    }

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException {
        gen.writeString("***hidden***");
    }
}
Drag options to blanks, or click blank then click option'
APasswordSerializer
Bserialize
CwriteString
DPasswordEncoder
Attempts:
3 left
💡 Hint
Common Mistakes
Using method names instead of class names in the annotation.
Mismatching class name between annotation and class declaration.

Practice

(1/5)
1. What is the primary purpose of Jackson in a Spring Boot application?
easy
A. To convert Java objects to JSON and vice versa
B. To manage database connections
C. To handle HTTP requests
D. To style HTML pages

Solution

  1. Step 1: Understand Jackson's role

    Jackson is a library used to convert Java objects into JSON format and back.
  2. Step 2: Compare options with Jackson's function

    Only To convert Java objects to JSON and vice versa describes this conversion role; others relate to different tasks.
  3. Final Answer:

    To convert Java objects to JSON and vice versa -> Option A
  4. Quick Check:

    Jackson = Java-JSON conversion [OK]
Hint: Jackson is for JSON conversion, not database or UI tasks [OK]
Common Mistakes:
  • Confusing Jackson with database or HTTP handling
  • Thinking Jackson styles HTML
  • Assuming Jackson manages server requests
2. Which of the following is the correct way to serialize a Java object to a JSON string using Jackson's ObjectMapper?
easy
A. objectMapper.readValue(object, String.class);
B. objectMapper.writeValueAsString(object);
C. objectMapper.toJson(object);
D. objectMapper.serialize(object);

Solution

  1. Step 1: Identify the serialization method in ObjectMapper

    The method to convert an object to JSON string is writeValueAsString.
  2. Step 2: Check other options for correctness

    readValue is for deserialization, toJson and serialize are not valid ObjectMapper methods.
  3. Final Answer:

    objectMapper.writeValueAsString(object); -> Option B
  4. Quick Check:

    Serialize with writeValueAsString() [OK]
Hint: Use writeValueAsString() to convert object to JSON string [OK]
Common Mistakes:
  • Using readValue() instead of writeValueAsString()
  • Assuming toJson() or serialize() exist in ObjectMapper
  • Mixing serialization and deserialization methods
3. Given the following code snippet, what will be the output?
ObjectMapper mapper = new ObjectMapper();
User user = new User("Alice", 30);
String json = mapper.writeValueAsString(user);
System.out.println(json);
Assuming User class has fields 'name' and 'age' with getters.
medium
A. {"Alice":30}
B. {"userName":"Alice","userAge":30}
C. {"name":"Alice","age":30}
D. Error: Cannot serialize User object

Solution

  1. Step 1: Understand default serialization of User object

    Jackson serializes fields with their names and values, so 'name' and 'age' become JSON keys and values.
  2. Step 2: Match output with expected JSON format

    {"name":"Alice","age":30} matches the expected JSON string with keys 'name' and 'age' and their values.
  3. Final Answer:

    {"name":"Alice","age":30} -> Option C
  4. Quick Check:

    Default serialization = field names as keys [OK]
Hint: Default JSON keys match Java field names with getters [OK]
Common Mistakes:
  • Expecting custom key names without annotations
  • Assuming serialization fails without extra config
  • Confusing field names with variable names
4. What is wrong with this code snippet that tries to pretty-print JSON?
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.PRETTY_PRINT);
String json = mapper.writeValueAsString(user);
medium
A. SerializationFeature.PRETTY_PRINT does not exist; should use INDENT_OUTPUT
B. writeValueAsString cannot produce pretty JSON
C. ObjectMapper must be configured with a custom serializer
D. Pretty print requires calling writeValue() instead

Solution

  1. Step 1: Check correct SerializationFeature for pretty print

    The correct feature name is INDENT_OUTPUT, not PRETTY_PRINT.
  2. Step 2: Verify usage of writeValueAsString

    writeValueAsString supports pretty printing if INDENT_OUTPUT is enabled.
  3. Final Answer:

    SerializationFeature.PRETTY_PRINT does not exist; should use INDENT_OUTPUT -> Option A
  4. Quick Check:

    Use INDENT_OUTPUT for pretty print [OK]
Hint: Use SerializationFeature.INDENT_OUTPUT for pretty JSON [OK]
Common Mistakes:
  • Using wrong feature name PRETTY_PRINT
  • Thinking writeValueAsString can't pretty print
  • Believing custom serializers are always needed
5. You want to serialize a Java object to JSON but exclude null fields from the output. Which Jackson configuration achieves this?
hard
A. mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
B. mapper.disable(SerializationFeature.WRITE_NULLS);
C. mapper.enable(SerializationFeature.EXCLUDE_NULLS);
D. mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

Solution

  1. Step 1: Identify correct method to exclude null fields

    Jackson uses setSerializationInclusion with JsonInclude.Include.NON_NULL to skip nulls.
  2. Step 2: Check other options for validity

    WRITE_NULLS and EXCLUDE_NULLS are not valid features; ALWAYS includes all fields.
  3. Final Answer:

    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); -> Option D
  4. Quick Check:

    Exclude nulls with NON_NULL inclusion [OK]
Hint: Use NON_NULL inclusion to skip null fields [OK]
Common Mistakes:
  • Using non-existent SerializationFeature flags
  • Confusing ALWAYS with excluding nulls
  • Trying to disable null writing with wrong methods
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard