我正在使用某个具有json输出的API,如下所示。我已将其解析为String
。
json输出为字符串:{"result":{"number":"INC0022500"}}
。
正如您所看到的,它具有键result
的嵌套对象。
我用来将上面的json映射到对象的我的片段。
Gson gson = new Gson();
EspIncidentTrial staff = gson.fromJson(json, EspIncidentTrial.class);
ESPIncidentTrial类:
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;
}
}
对于嵌套对象,我创建了另一个类ResultTrial
。下面是身体。
ResultTrial类:
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;
}
}
现在发生的是,在EspIncidentTrial
类中,对象result
正在被映射。但是,在ResultTrial
类中,没有进行映射。
我尝试将json对象中的键result
视为String,但抛出了下面的错误,这是预期的。
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
请帮忙!
答案 0 :(得分:1)
这里混合了gson
和Jackson
。
您正在使用Jackson
的传单,但使用GSON's
方法取消它。
使用Jackson's
objectMapper
进行反序列化。
E.g:
ObjectMapper mapper = new ObjectMapper();
EspIncidentTrial staff = mapper.readValue(json, EspIncidentTrial.class);
答案 1 :(得分:0)
你可以试试这个......
字符串searchdata =" {\" userPojo \":{\" userid \":1156}}";
JSONObject jsonObject = new JSONObject(searchdata);
SummaryPojo summaryPojo = new SummaryPojo();
如果(searchdata.contains(" userPojo&#34))
{
String jsonstring = jsonObject.getString(" userPojo");
Gson gson = new Gson();
UserPojo userPojo = gson.fromJson(searchdata,UserPojo.class);
summaryPojo.setUserPojo(userPojo);
}