UnrecognizedPropertyException:无法识别的字段未标记为可忽略来源:org.apache.catalina.connector.CoyoteInputStream@14ec141

新手上路,请多包涵

我正在制作休息网络服务我的代码是:

 @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();
    }
}

但是当我用这个 Json 调用它时:

 [
{
    "userId":"3",
    "groupId":"4"
}
]

我收到以下异常:

javax.servlet.ServletException:org.codehaus.jackson.map.exc.UnrecognizedPropertyException:无法识别的字段“userId”(类 com.tazligen.model.GroupMemberMap),未标记为可忽略 [来源:org.apache.catalina.connector。郊狼输入流@14ec141;行:2,列:15](通过引用链:com.tazligen.model.GroupMemberMap[“userId”])

我的 GrouMemberMap 模型类是:

 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";
}

用 json

 [{
"userId":"3",
"userName":"John"}]

但这没问题:/

需要有人帮助。

原文由 Syed Muhammad Oan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 951
2 个回答

在查看 GroupMemberMap 类后,我可以做出以下观察:

  1. 缺少构造函数。
  2. UserId 的 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;
    }
}

原文由 user2004685 发布,翻译遵循 CC BY-SA 3.0 许可协议

我正在使用 lombok 生成带有 @Getter 和 @Setter 注释的 getter 和 setter。现在为我解决了一个类似的问题是将字段的数据类型从主要 java 类型 boolean 转换为 Boolean。仅当我使用 Boolean fieldName 时,Lombok 才为其生成一个 getter。

原文由 Yash Nasery 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题