fasterxml

java之@RequestBody的使用

依然范特西╮ 提交于 2019-11-28 19:51:16
基础知识介绍: @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。 注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。 注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、 数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收 参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value 里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。 即:如果参数时放在请求体中,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在 请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前

Could not read JSON: Can not deserialize instance of hello.Country[] out of START_OBJECT token

北城余情 提交于 2019-11-28 18:36:25
I have rest url that gives me all countries - http://api.geonames.org/countryInfoJSON?username=volodiaL . I use RestTemplate from spring 3 to parse returned json into java objects: RestTemplate restTemplate = new RestTemplate(); Country[] countries = restTemplate.getForObject("http://api.geonames.org/countryInfoJSON?username=volodiaL",Country[].class); When I run this code I get an exception: Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of hello.Country[] out of START_OBJECT token at [Source: sun.net.www.protocol.http.HttpURLConnection

java.lang.ClassNotFoundException / NoClassDefFoundError for com/fasterxml/jackson/databind/ObjectMapper with Maven

爱⌒轻易说出口 提交于 2019-11-27 23:50:26
问题 I get the following error when trying to run a java program that uses jackon's ObjectMapper class: Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper at com.inin.dynamotransfer.DynamoTransfer.importData(DynamoTransfer.java:133) at com.inin.dynamotransfer.DynamoTransfer.main(DynamoTransfer.java:67) Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

Could not read JSON: Can not deserialize instance of hello.Country[] out of START_OBJECT token

廉价感情. 提交于 2019-11-27 11:30:30
问题 I have rest url that gives me all countries - http://api.geonames.org/countryInfoJSON?username=volodiaL. I use RestTemplate from spring 3 to parse returned json into java objects: RestTemplate restTemplate = new RestTemplate(); Country[] countries = restTemplate.getForObject("http://api.geonames.org/countryInfoJSON?username=volodiaL",Country[].class); When I run this code I get an exception: Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of hello

SpringBoot中使用@RequestBody时如何自定义需要转换的日期格式

狂风中的少年 提交于 2019-11-27 05:06:38
SpringBoot(SpringMVC)序列化和反序列化Json时默认使用的是Jackson(例如使用@RequestBody反序列化前端传递过来的Json字符串时), 当我们前端使用Json字符串传递到后台时日期格式可能是时间戳(即long类型的数字),也有可能是日期字符串(如:"yyyy-MM-dd", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH:mm:ss")等等。 如果是时间戳或者是yyyy-MM-dd格式的日期,Jackson会自动识别并且转换成功,若是yyyy-MM-dd HH:mm:ss这种格式的日期字符串的话,Jackson无法自动转换成Date类型。 这里有几种解决方案,如下: 一. 我们可以在需要被反序列化的日期属性上添加com.fasterxml.jackson.annotation.JsonFormat注解,如下: 这个注解对于Jackson 序列化以及反序列化均起作用 (即将日期对象序列化成Json时格式为以上指定的格式,将Json反序列化成日期时会按照以上指定的日期格式进行解析,若日期字符串的格式不满足以上指定的格式将会直接报错) 二. 方法一我们只能指定一种日期的格式,但是我们前端可能传递各种类型的日期格式,这个时候我们需要自定义Json日期转换器,如下在日期类型的属性上添加com.fasterxml.jackson

Case insensitive JSON to POJO mapping without changing the POJO

时光怂恿深爱的人放手 提交于 2019-11-27 04:57:56
Does anyone know how com.fasterxml.jackson.databind.ObjectMapper is able to map JSON properties to POJO properties case insensitive? JSON-String: [{"FIRSTNAME":"John","LASTNAME":"Doe","DATEOFBIRTH":"1980-07-16T18:25:00.000Z"}] POJO-Class: public class Person { private String firstName; private String lastName; private Date dateOfBirth; 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 Date

Spring 4.2.3 and fasterxml Jackson 2.7.0 are incompatible

青春壹個敷衍的年華 提交于 2019-11-26 20:52:46
After migration from fasterxml.jackson 2.6.3 to 2.7.0. This is because public JavaType constructType(Type type, Class<?> contextType) method used in Spring's AbstractJackson2HttpMessageConverter was removed. How to fix this? I am using Spring 4.2.3. /signin/facebook java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType; at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.getJavaType(AbstractJackson2HttpMessageConverter.java:314) at org

JSON Serializing date in a custom format (Can not construct instance of java.util.Date from String value)

谁说胖子不能爱 提交于 2019-11-26 16:39:54
问题 could not read JSON: Can not construct instance of java.util.Date from String value '2012-07-21 12:11:12': not a valid representation("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) passing json request to REST controller method in a POJO class.user should enter only in below datetime format other wise it should throw message.why DateSerializer is not calling? add(@Valid @RequestBody User user) { } json: { "name":"ssss", "created

SpringBoot入坑指南之七:格式化LocalTime、LocalDate和LocalDateTime

岁酱吖の 提交于 2019-11-26 15:06:33
开篇 好久好久没更新这个文集了,上一次更新我都忘记是什么时间了,原计划Spring Boot系列会写十几篇文章的,现在才写到第7篇(含本文),后续还是会继续更新吧,我一直觉得,写博客的主要目的是梳理自己的技术栈,分享只是附属价值,所以还是要坚持下去的~ 本文主要说说如何格式化Restful接口的时间类型,从JDK8开始提供了更方便日期时间的API,如:LocalTime、LocalDate和LocalDateTime,从此可以远离原来的Date和Calendar类,日期操作变得简单多了。 SpringBoot日期格式化问题 然而,在Spring Boot进行Restful接口开发中使用这些日期时间类型时,你会发现使用jackson的 spring.jackson.date-format 配置进行日期类型格式化是无效的,为什么呢? //以下是配置了`spring.jackson.date-format=yyyy-MM-dd HH:mm:ss`后, //接口返回LocalDateTime和Date的内容,你会发现Date类型的已经格式化, //但是LocalDateTime却没有。 { "localDateTime": "2019-07-14T12:20:23.615", "date": "2019-07-14 04:20:23" } 实际上在Jackson序列化的时候

Spring 4.2.3 and fasterxml Jackson 2.7.0 are incompatible

删除回忆录丶 提交于 2019-11-26 12:17:37
问题 After migration from fasterxml.jackson 2.6.3 to 2.7.0. This is because public JavaType constructType(Type type, Class<?> contextType) method used in Spring\'s AbstractJackson2HttpMessageConverter was removed. How to fix this? I am using Spring 4.2.3. /signin/facebook java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType; at org.springframework.http.converter.json