parmendrak74
parmendrak74

Reputation: 93

Including nested objects in the JSON of a Spring Boot application

Can anyone guide me on how to nest the JSON object Activation under the JSON object Data.

See my JSON below:

{
    "status": "Success",
    "DATA": {
        "aid": "0",
        "app": "OASIS_EDGE",
        "actkey": "STAR2020",
        "expiredate": "2025-08-05 04:40:28.0",
        "partner": "X",
        "nsp": "NAD"
    }
}

The JSON I actually expect:

{
    "STATUS": "SUCCESS",
    "DATA": {
        "ACTIVATION": {
            "aid": "0",
            "app": "OASIS_EDGE",
            "actkey": "STAR2020",
            "expiredate": "2025-08-05 04:40:28.0",
            "partner": "X",
            "nsp": "NAD"
        }
    }
}

Here is my ActivationResponse.java class responsible for creating the JSON:

public class ActivationResponse {   
    
    private String Status;
        
    public String getStatus()
    {
        return Status;
    }
    
    public void setStatus(String Status) {
        this.Status = Status;
    }
    
    @JsonProperty("DATA")   
        
    private ActivationModel activationData;
     
    
    public ActivationModel getActivationData() {
        return activationData;
    }

    public void setActivationData(ActivationModel activationData2) {
        this.activationData = activationData2;
    }

}

Upvotes: 2

Views: 5683

Answers (2)

mtotowamkwe
mtotowamkwe

Reputation: 3047

  1. Use JsonNode from com.fasterxml.jackson.databind.JsonNode à la:
import com.fasterxml.jackson.databind.JsonNode;

public class ActivationResponse {
    
    private String Status;

    private JsonNode activationData;
        
    public String getStatus() return Status;
    
    public void setStatus(String Status) this.Status = Status;  
    
    public ActivationModel getActivationData() return activationData;

    public void setActivationData(ActivationModel activationData2) {
        activationData = activationData2;
    }
}
  1. Use the good 'ol Map from java.util.Map like so:
import java.util.Map;

public class ActivationResponse {
    
    private String Status;

    private Map<String, Object> activationData;
        
    public String getStatus() return Status;
    
    public void setStatus(String Status) this.Status = Status;  
    
    public ActivationModel getActivationData() return activationData;

    public void setActivationData(ActivationModel activationData2) {
        activationData = activationData2;
    }
}

I shamelessly borrowed from this tutorial (no affiliations)!

Upvotes: 0

C&#225;ssio Tatsch
C&#225;ssio Tatsch

Reputation: 26

Since you want activation under data, you need a class data with a field for activation, like the example below.

class MyJson {
  private String Status;

  @JsonProperty("DATA")   
  private DataModel data;
};
 
class DataModel {
  @JsonProperty("ACTIVATION")   
  private ActivationModel activation;
};

Upvotes: 1

Related Questions