this_is_sagar this_is_sagar - 25 days ago 6
JSON Question

want to map a json object unto a java object

I am using a certain API which have a json output as below. I have parsed it to

String
.
the json output as string:
{"result":{"number":"INC0022500"}}
.

As you can see it has nested object for key
result
.

my snippet which i am using to map the above json unto a object.

Gson gson = new Gson();
EspIncidentTrial staff = gson.fromJson(json, EspIncidentTrial.class);


ESPIncidentTrial class:

import javax.persistence.Embeddable;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

@Embeddable
@JsonIgnoreProperties(ignoreUnknown = true)
public class EspIncidentTrial {
@JsonProperty("result")
private ResultTrial result;

public ResultTrial getResult() {
return result;
}

public void setResult(ResultTrial result) {
this.result = result;
}

}


For the nested object i created another class
ResultTrial
. Below is the body.

ResultTrial class:

import javax.persistence.Embeddable;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

@Embeddable
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResultTrial {
@JsonProperty("number")
private String incidentId;

public String getIncidentId() {
return incidentId;
}

public void setIncidentId(String incidentId) {
this.incidentId = incidentId;
}
}


What happens now is, in
EspIncidentTrial
class, object
result
is getting mapped. However, inside
ResultTrial
class, no mapping is being done.

I tried treating the key
result
in the json object as String, but the threw the below error, which was expected though.

The error occured while parsing the JSON. com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 12 path $.result


Please help!

Answer Source

Here you are mixing gson and Jackson. You are using annoations of Jackson, but using GSON's method to deserailze it.

Use Jackson's objectMapper to deserialize.

E.g.:

ObjectMapper mapper = new ObjectMapper();
EspIncidentTrial staff = mapper.readValue(json, EspIncidentTrial.class);