想要将json对象映射到java对象

时间:2017-09-22 09:24:35

标签: java json gson pojo

我正在使用某个具有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

请帮忙!

2 个答案:

答案 0 :(得分:1)

这里混合了gsonJackson。 您正在使用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);

}