【问题标题】:JSON parse error: Cannot deserialize instance of com.finance.biblioteca.service.dto.LibroDTO out of START_ARRAY token;JSON 解析错误:无法从 START_ARRAY 令牌中反序列化 com.finance.biblioteca.service.dto.LibroDTO 的实例;
【发布时间】:2020-04-18 11:11:24
【问题描述】:
[
    {
        "id": 52,
        "titolo": "Le solite sospette",
        "categorie": [],
        "autori": [],
        "editori": [],
        "anno_uscita": "2015",
        "idCollana": 1,
        "disponibilita": 1,
        "prezzo": 9
    }
]

我可以解决这个错误吗?当我想添加一个新对象时会出现这种情况

@PostMapping(URL)
public LibroDTO newLibro(@RequestBody LibroDTO libroDTO)

"message": "JSON 解析错误:无法从 START_ARRAY 令牌中反序列化 com.finance.biblioteca.service.dto.LibroDTO 的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_ARRAY 令牌中反序列化 com.finance.biblioteca.service.dto.LibroDTO 的实例\n at [Source: (PushbackInputStream); line: 1, column: 1]"

【问题讨论】:

  • 你能告诉我 LibroDTO
  • 这是我的 dto: private Long id;私有字符串 titolo;私有列表 类别;私有列表 autori;私有列表 编辑器;私人字符串 anno_uscita;私人长 idCollana;私人内部处置;私人 int 价格;
  • 你不使用 JsonProperty 吗?
  • 不,我从来没有用过,你能链接一个关于的文档吗?

标签: java json parsing postman


【解决方案1】:

您的 JSON 字符串以 [ 开头,因此它是一个数组,而方法 newLibro 采用单一的 LibroDTO
您应该将该方法的签名更改为:
public LibroDTO newLibro(@RequestBody List<LibroDTO> libri)
或将您的 JSON 更改为

{ "id": 52, "titolo": "Le solite sospette", "categorie": [], "autori": [], "editori": [], "anno_uscita": "2015", "idCollana": 1, "disponibilita": 1, "prezzo": 9 }

为了传递单个对象。

【讨论】:

  • 并且错误是:“消息”:“查询没有返回唯一结果:9;嵌套异常是 javax.persistence.NonUniqueResultException:查询没有返回唯一结果:9”,跨度>
  • @Max 似乎与原始问题无关。您能否将堆栈跟踪和相关代码添加到问题中?无论如何,您似乎做了一个返回对象列表的查询,但您试图将结果分配给非集合变量。例如:LibroDTO libro = libriRepository.findByAuthor(autore); 而不是 List<LibroDTO> libri = libriRepository.findByAuthor(autore);
猜你喜欢
  • 2020-04-03
  • 2019-04-28
  • 2020-07-14
  • 2020-06-16
  • 1970-01-01
  • 2020-09-23
  • 2016-06-05
  • 1970-01-01
  • 2016-07-30
相关资源
最近更新 更多