【问题标题】:Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of com.model.user out of START_ARRAY token原因:org.codehaus.jackson.map.JsonMappingException:无法从 START_ARRAY 令牌中反序列化 com.model.user 的实例
【发布时间】:2013-06-18 12:14:23
【问题描述】:

我正在将 json 字符串从 restclient 传递给模型对象用户的 resteasy webservice。

我已设置 Content-Type=application/json

而我body中的json字符串如下,

{
    "id": "100",
    "email": "email",
    "add": [
        {
            "lastName": "lastName",
            "firstName": "firstName"
        },
        {
            "firstName": "firstName",
            "lastName": "lastName"
        }
    ]
}

如果我按如下方式删除添加数组对象,那么我将得到预期的响应。

{
    "id": "100",
    "email": "email",
}

当我尝试发送 add array 时,服务器抛出异常说,

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of com.model.add out of START_ARRAY token

我也试过这种方法,但它不起作用,

{
    "id": "100",
    "email": "email",
     "lastName": "Something Four",
     "firstName": "Something Five"
}

然后它给出以下错误,

Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "lastName" (Class com.model.user), not marked as ignorable

我的模型对象在下面,

public class user implements Serializable {
    @Id
    @Column(name="Id", unique=true, nullable=false)
    private int id;

    @Column(name="email", nullable=true, length=60)
    private String email;

    @ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name="Id", nullable=false)
    private add add;
}



public class add implements Serializable {

    @Id
    @Column(name="Id", unique=true, nullable=false)
    private String id;

    @Column(name="LastName", nullable=true, length=128)
    private String lastName;

    @Column(name="FirstName", nullable=true, length=128)
    private String firstName;

}

我的服务类

@POST
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
     public Response addAccount(@FormParam("id") String id,
             @FormParam("lastName") String lastName,
             @FormParam("firstName") String firstName,
             @FormParam("email") String email{



            user.setId(id); 
            add.setLastName(lastName);
            add.setFirstName(firstName);
            user.setEmailAddress(email);
}

谁能帮助我将一个模型对象作为 json 字符串中的数组传递到另一个模型对象中?

【问题讨论】:

  • 请向我们展示您发送的 JSON。 Jackson 在这里告诉你这不是 JSON 数组。
  • 这是我使用的 json,{ "id": "100", "email": "email", "add": [ { "lastName": "lastName", "firstName" : "firstName" }, { "firstName": "firstName", "lastName": "lastName" } ] } 我已经使用 jsonlint 对其进行了验证,并将其显示为有效的 json。\
  • 这不是问题所在。我问您作为已删除的 add 数组发送的内容。
  • 那你如何解释你的第一条消息? “无法从 START_ARRAY 令牌中反序列化 com.model.add 的实例”
  • 再次阅读您的第二条消息,它还说:“无法识别的字段“lastName”(类 com.model.user),未标记为可忽略”

标签: java json model rest-client


【解决方案1】:

我遇到了同样的错误,我找到了解决方案;我的模型课中缺少 getter 和 setter。 可能这会解决这个问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2015-03-10
  • 2019-10-25
  • 2015-12-24
  • 2018-12-03
相关资源
最近更新 更多