Java UnrecognizedPropertyException:未在源代码org.apache.catalina.connector处标记为可忽略的未识别字段。CoyoteInputStream@14ec141
我正在使用rest web服务,我的代码是:Java UnrecognizedPropertyException:未在源代码org.apache.catalina.connector处标记为可忽略的未识别字段。CoyoteInputStream@14ec141,java,json,jackson,jackson-databind,Java,Json,Jackson,Jackson Databind,我正在使用rest web服务,我的代码是: @Path("/add") @POST @Produces(MediaType.APPLICATION_JSON) public Response addMembers(List<GroupMemberMap> groupMemberMaps){ String message = ""; System.out.println("Inside addMembers of class "+this.to
@Path("/add")
@POST
@Produces(MediaType.APPLICATION_JSON)
public Response addMembers(List<GroupMemberMap> groupMemberMaps){
String message = "";
System.out.println("Inside addMembers of class "+this.toString());
try {
DBConnection.insertMembers(groupMemberMaps);
message = "Member(s) added";
return Response.status(Status.CREATED)
.entity(message)
.type(MediaType.TEXT_PLAIN)
.build();
} catch(SQLException sqle){
System.out.println("addMembers catch sqle");
message = "A problem occured while adding members : "+sqle.getMessage();
return Response.status(Status.INTERNAL_SERVER_ERROR)
.entity(message)
.type(MediaType.TEXT_PLAIN)
.build();
}
catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Inside addMembers catch "+e.getMessage());
message = "A problem occured while adding members : "+e.getMessage();
return Response.status(Status.INTERNAL_SERVER_ERROR)
.entity(message)
.type(MediaType.TEXT_PLAIN)
.build();
}
}
我遇到了以下异常:
javax.servlet.ServletException:org.codehaus.jackson.map.exc.UnrecognizedPropertyException:Unrecogned字段“userId”(Class com.tazligen.model.GroupMemberMap),未在[来源:org.apache.catalina.connector]处标记为可忽略。CoyoteInputStream@14ec141;行:2,列:15](通过引用链:com.tazligen.model.GroupMemberMap[“userId”])
我的地图模型类是:
package com.tazligen.model;
@XmlRootElement
public class GroupMemberMap {
private String userId;
private String groupId;
public String getUserid() {
return userId;
}
public void setUserid(String userId) {
this.userId = userId;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
} }
我尝试过另一种方法,就像这样:
@Path("/membertest")
@POST
public String test(List<User> members){
return "Test subresource members working";
}
但这很管用:/
需要人帮助。在查看
GroupMemberMap
课程后,我可以做以下观察:
用户ID
的Getter Setter不正确@JsonIgnoreProperties
以忽略所有其他未知字段
以下是更正后的代码片段:
package com.tazligen.model;
@XmlRootElement
@JsonIgnoreProperties(ignoreUnknown = true)
public class GroupMemberMap {
@JsonProperty("userId")
private String userId;
@JsonProperty("groupId")
private String groupId;
/* Add Constructor */
public GroupMemberMap() {}
/* Corrected Name */
public String getUserId() {
return userId;
}
/* Corrected Name */
public void setUserId(String userId) {
this.userId = userId;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
}
只需修改userId和groupId
public
默认情况下,Jackson处理公共成员变量
我认为JsonIgnoreProperties不是解决方案,因为它被用来忽略任何它无法识别的东西
public String userId;
public String groupId;
我对我的问题进行了一些编辑,您可以看到我尝试使用了不同的模型类,但使用了类似的json模式,但该模式更新了解决方案。请现在试试。你的2号观察结果表明,这个把戏的getter setter是错误的,我错过它的唯一原因是因为我让eclipse为我自动生成了它,所以我从来没有想过它会是错误的,所以我从来没有注意过这个部分。--该死的eclipse。非常感谢,先生:)@Muhammad欢迎您
package com.tazligen.model;
@XmlRootElement
@JsonIgnoreProperties(ignoreUnknown = true)
public class GroupMemberMap {
@JsonProperty("userId")
private String userId;
@JsonProperty("groupId")
private String groupId;
/* Add Constructor */
public GroupMemberMap() {}
/* Corrected Name */
public String getUserId() {
return userId;
}
/* Corrected Name */
public void setUserId(String userId) {
this.userId = userId;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
}
public String userId;
public String groupId;