gpt4 book ai didi

java - 无法将 json 字符串解析为通用 java 对象

转载 作者:行者123 更新时间:2023-12-01 04:19:03 27 4
gpt4 key购买 nike

我正在开发 Jersey 网络服务。 like this以下是我在 Jersey 客户端收到的 json 字符串

{"license":"12345","dimRequirement":[{"alternateId":"AlternateID","classificati‌​on":"1"}] }

但是当我解析它时出现错误。我使用 jackson 进行解析

    Unrecognized field "dimRequirement" (Class com.vxl.AppObject), not marked as ignorable
at [Source: java.io.StringReader@7be6f06c; 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<xxx>,AppObject<yyy> 的 POST 请求使用相同的服务

@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 类有一个 JSON 中不存在的字段。您需要使用 jackson 注释来创建该类,以表明它可以被忽略。

关于java - 无法将 json 字符串解析为通用 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com