Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java UnrecognizedPropertyException:未在源代码org.apache.catalina.connector处标记为可忽略的未识别字段。CoyoteInputStream@14ec141_Java_Json_Jackson_Jackson Databind - Fatal编程技术网

Java UnrecognizedPropertyException:未在源代码org.apache.catalina.connector处标记为可忽略的未识别字段。CoyoteInputStream@14ec141

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

我正在使用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.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;