【问题标题】:Cannot deserialize instance无法反序列化实例
【发布时间】:2019-07-06 02:58:17
【问题描述】:

我有问题。我正在使用 Spring Boot 和 sqlite3 DB。我试图将数据发送到数据库。 当我将数据发送到数据库时出现此错误:

{
    "timestamp": "2019-02-12T12:39:40.413+0000",
    "status": 400,
    "error": "Bad Request",
    "message": "JSON parse error: Cannot deserialize instance of `com.dar.darkozmetika.models.CategoryModel` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.dar.darkozmetika.models.CategoryModel` out of START_ARRAY token\n at [Source: (PushbackInputStream); line: 1, column: 1]",
    "path": "/api/cateogry/dar"
}

这是我的控制器:

RestController
@RequestMapping("api/cateogry/dar")
public class CategoryController {
    @Autowired
    private CategoryRepository categoryRepository;

    @GetMapping
    private List<CategoryModel> getAllCategory (){
        System.out.println("sadad");
        System.out.println("sadad" + this.categoryRepository.findAll());

        return this.categoryRepository.findAll();
    }

    @PostMapping
    @ResponseStatus(HttpStatus.OK)
    public void create(@RequestBody CategoryModel bike) {
        categoryRepository.save(bike);
    }

    @GetMapping("/{id}")
    public CategoryModel getSpecificCategory(@PathVariable("id") long id) {
        return null;//categoryRepository.getOne(id);
    }
}

这是我的模型:

@Entity
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class CategoryModel {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String categoryName;
    private String categoryDescription;
    private String imagePath;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCategoryName() {
        return categoryName;
    }

我从 Postman 发送了这些数据:

[
    {
        "id": 2,
        "categoryName": "dsds",
        "categoryDescription": "sdsd",
        "imagePath": "Jsdsds"
    }
]

非常有趣,我可以毫无问题地从数据库中获取数据。这是从我的数据库返回的。

[
    {
        "id": 1,
        "categoryName": "jeff@bikes.com",
        "categoryDescription": "Globo MTB 29 Full Suspension",
        "imagePath": "Jeff Miller"
    }
]

【问题讨论】:

  • 因为Request级别有问题。它格式错误,因此HTTP-400 Bad Request.
  • 好的,我能用这个做什么?

标签: spring-boot sqlite


【解决方案1】:

您的请求不正确,您正在发送CategoryModel 的数组,而POST api/cateogry/dar 只收到CategoryModel。你应该只发送:

{
    "id": 2,
    "categoryName": "dsds",
    "categoryDescription": "sdsd",
    "imagePath": "Jsdsds"
}

【讨论】:

    猜你喜欢
    • 2020-11-26
    • 2019-09-22
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多