저지 웹 서비스를 진행하고 있습니다. like this 다음 내 저지 클라이언트JSON 문자열을 일반 Java 객체로 구문 분석 할 수 없습니다.
{"license":"12345","dimRequirement":[{"alternateId":"AlternateID","classification":"1"}] }
에서받은 JSON 문자열입니다하지만 난 그것을 error.I이
Unrecognized field "dimRequirement" (Class com.vxl.AppObject), not marked as ignorable
at [Source: [email protected]; line: 1, column: 49] (through reference chain: com.vxl.appanalytix.AppObject["dimRequirement"])
at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:244)
at org.codehaus.jackson.map.deser.StdDeserializer.reportUnknownProperty(StdDeserializer.java:589)
at org.codehaus.jackson.map.deser.StdDeserializer.handleUnknownProperty(StdDeserializer.java:575)
at org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:684)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:515)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:351)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2131)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1402)
at com.vxl.CheckJersy.main(CheckJersy.java:56)
을 구문 분석 잭슨을 사용 준다 구문 분석하고 때 나는
을 구문 분석 유형 참조를 추가하여 시도new ObjectMapper().readValue(
output,new TypeReference<AppObject<DimRequirement>>() { });
제네릭 클래스
개@XmlRootElement
@XmlSeeAlso({ DimRequirement.class})
public class AppObject<T> implements Serializable {
private List<T> list;
private String license;
public AppObject() {
list = new ArrayList<T>();
}
public AppObject(List<T> list) {
this.list = list;
}
@XmlAnyElement(lax = true)
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
}
서비스 나는 당신의 AppObject 클래스는 JSON에 존재하지 않는 필드가 AppObject<xxx>,AppObject<yyy>
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/getreq")
@Override
public AppObject getAllByClientNIsCurrent(
AppObject<DimRequirement> appObject) {
List<DimRequirement> dimreqlist = dimRequirementDao
.getAllByClientNIsCurrent(appObject.getClientKey());
AppObject<DimRequirement> appObject = new AppObject<DimRequirement>();
appObject.setList(dimreqlist);
return appObject;
}
수정 된 코드를 확인하십시오. AppObject는 일반적으로 서버 측에서 AppObject를 반환합니다. [check this] (http://stackoverflow.com/questions/19113280/jersey-rest-services-showing-exception-javax-ws-rs-webapplicationexception-java) –
jos