【问题标题】:Can not deserialize instance of java.lang.String out of START_ARRAY token;无法从 START_ARRAY 令牌中反序列化 java.lang.String 的实例;
【发布时间】:2017-08-31 19:05:02
【问题描述】:

请帮我解决这个问题:

Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Can not deserialize instance of java.lang.String out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token
 at [Source: java.io.PushbackInputStream@4010b719; line: 1, column: 31]

我发送以下 JSON 请求:

{"title": "Test", "category": ["2","4","3",1], "description": "Test", "username": ""}

“类别”列出现错误。

我使用 PostgreSQL 数据库 我有以下模型:

 @Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idea_seq")
@SequenceGenerator(name = "idea_seq", sequenceName = "idea_seq", allocationSize = 1)
private Integer id;

@Column(name = "TITLE", length = 100)
@NotNull
@Size(min = 1, max = 100)
private String title;

@Column(name = "CATEGORY", length = 10)
@NotNull
@Size(min = 1, max = 100)
private String[] category;

@Column(name = "DESCRIPTION", length = 1000)
@NotNull
@Size(min = 1, max = 1000)
private String description;

@Column(name = "USERNAME", length = 100)
@NotNull
@Size(min = 1, max = 100)
private String username;

我会很高兴得到任何帮助。我已经有这个错误好几天了。

【问题讨论】:

  • 发布相关代码,以及完整的 excatption 堆栈跟踪。另外,修复你的 JSON:,1] 应该是 ,"1"]
  • 当我在 Google 上搜索此错误消息时,StackOverflow 上的其他三个线程会出现。您是否检查过它们是否适合您的问题?
  • 您好 JB Nizet,我已经发布了整个异常堆栈跟踪。你的相关代码是什么? @Lothar:你真的认为我不会先检查这些吗?
  • 默认反序列化数组ava.util.List不是数组。因此,您应该将字段category 更改为private List<String> category;。它应该可以工作。

标签: java json spring postgresql


【解决方案1】:

您的 JSON 类别包含一个数字

“类别”:["2","4","3",1]

这需要引用。

【讨论】:

  • 对不起,我的错。错误依然存在
  • @justus 我很难相信。您是否尝试过清洁/重建?
  • 如果您仍然遇到问题,请尝试更改 private String[] 类别;到私有 List 类别;
  • 试过了。还是一样的问题
猜你喜欢
  • 2015-03-10
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2020-09-23
  • 1970-01-01
  • 2016-07-30
  • 2019-10-25
相关资源
最近更新 更多