java报错不能反序列化_JSON解析错误:无法构造java.time.LocalDate的实例:no String-argument构造函数/工厂方法从String值反序列化...

我是

Spring Data REST项目的新手,我正在尝试创建我的第一个RESTful服务.任务很简单,但我被困住了.

我想使用RESTful API对存储在嵌入式数据库中的用户数据执行CRUD操作.

但我无法弄清楚如何使Spring框架处理birthData为“1999-12-15”并将其存储为LocalDate. @JsonFormat注释没有帮助.

目前我收到错误:

HTTP/1.1 400

Content-Type: application/hal+json;charset=UTF-8

Transfer-Encoding: chunked

Date: Thu, 24 Aug 2017 13:36:51 GMT

Connection: close

{"cause":{"cause":null,"message":"Can not construct instance of java.time.LocalDate:

no String-argument constructor/factory method to deserialize from String value ('1999-10-10')\n

at [Source: org.apache.catalina.connector.CoyoteInputStream@4ee2a60e;

line: 1, column: 65] (through reference chain: ru.zavanton.entities.User[\"birthDate\"])"},

"message":"JSON parse error: Can not construct instance of java.time.LocalDate:

no String-argument constructor/factory method to deserialize from String value ('1999-10-10'); nested exception is com.fasterxml.jackson.databind.JsonMappingException:

Can not construct instance of java.time.LocalDate: no String-argument constructor/factory method to deserialize from String value ('1999-10-10')\n

at [Source: org.apache.catalina.connector.CoyoteInputStream@4ee2a60e; line: 1, column: 65] (through reference chain: ru.zavanton.entities.User[\"birthDate\"])"}

如何使其工作,以便客户端调用如下:

curl -i -X POST -H "Content-Type:application/json" -d "{ \"firstName\" : \"John\", \"lastName\" : \"Johnson\", \"birthDate\" : \"1999-10-10\", \"email\" : \"john@example.com\" }" http://localhost:8080/users

实际上会将实体存储到数据库中.

以下是有关课程的信息.

用户类:

package ru.zavanton.entities;

import com.fasterxml.jackson.annotation.JsonFormat;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import java.time.LocalDate;

@Entity

public class User {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private long id;

private String firstName;

private String lastName;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")

private LocalDate birthDate;

private String email;

private String password;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public LocalDate getBirthDate() {

return birthDate;

}

public void setBirthDate(LocalDate birthDate) {

this.birthDate = birthDate;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

UserRepository类:

package ru.zavanton.repositories;

import org.springframework.data.repository.PagingAndSortingRepository;

import org.springframework.data.repository.query.Param;

import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import ru.zavanton.entities.User;

@RepositoryRestResource(collectionResourceRel = "users", path = "users")

public interface UserRepository extends PagingAndSortingRepository {

User findByEmail(@Param("email") String email);

}

申请类:

package ru.zavanton;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}


版权声明:本文为weixin_39938312原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。