最近做项目,和其他人商议用json通信,因为对方是php程序员,php的编码风格对于java程序员来说就是变态,有几点变态需求:
1、json requestbody 输要用单引号(jackson默认是双引号,单引号直接报错)
2、responsebody数字输出要加引号,字段名要加引号。
3、null值为空串
于是查阅官方文档,终于找到方法,有点小搓,直接在Converter对象上注入一个自定义类ObjectMappingCustomer:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> <property name="objectMapper"> <bean class="com.wuliaolll.util.ObjectMappingCustomer"></bean> </property> </bean> </list> </property> </bean>
package com.wuliaolll.util; import java.io.IOException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializerProvider; public class ObjectMappingCustomer extends ObjectMapper { public ObjectMappingCustomer() { super(); // 允许单引号 this.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); // 字段和值都加引号 this.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); // 数字也加引号 this.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true); this.configure(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS, true); // 空值处理为空串 this.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize( Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException { jg.writeString(""); } }); } }
相关推荐
在`preHandle`方法中,我们可以读取请求体(request body),将其转换为JSON对象,然后遍历并替换null值为""(空字符串)。 ```java import org.springframework.web.servlet.HandlerInterceptor; import org....
springboot 处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全),给为空字段初始化值,如:字符串null转换为"
在开发Web应用时,我们经常会遇到一个问题:当使用Spring MVC的`@ResponseBody`注解将后端处理结果直接转化为HTTP响应体时,如果这个结果中包含HTML特殊字符,如尖角号、引号、按位与符号等,浏览器可能会误解析,...
Spring MVC是Spring框架的一个核心模块,专门用于处理Web应用程序的请求和响应。在这个"Spring MVC 3_demo"中,我们重点探讨的是使用注解来实现Spring MVC 3的应用。注解在Spring MVC中扮演着重要角色,它们简化了...
Spring MVC还提供了`@JsonView`注解来控制JSON响应中的数据粒度,以及`@JsonProperty`和`@JsonIgnore`来控制哪些字段应包含在JSON中。 **jQuery和JavaScript** jQuery是一个流行的JavaScript库,简化了DOM操作、...
Spring MVC请求参数与响应结果全局加密和解密详解 在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 ...
在本文中,我们将深入探讨如何利用Spring MVC创建RESTful服务,这些服务可以处理字符串、JSON和XML数据,并且是用Maven构建的。我们将讨论关键概念、配置、以及如何构建可直接运行的项目。 1. **RESTful服务**:...
在Spring MVC中,我们可以使用Jackson库或者Gson库将Java对象转换为JSON字符串,反之亦然。 2. **Spring MVC中的JSON配置** 在Spring MVC项目中,我们需要引入相应的JSON库,如Jackson的`jackson-databind`依赖。...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的Web应用程序。单元测试是软件开发过程中不可或缺的一部分,它允许开发者独立地测试代码的各个部分,确保它们按照预期工作。Spring MVC 提供了对...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一个重要模块,主要用于构建 Web 应用程序的后端控制层。这个框架提供了模型-视图-控制器(MVC)设计模式的实现,简化了Java Web应用的开发...
在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...
10. **ConversionService**:转换服务,处理类型转换,比如将请求参数从字符串转换为其他数据类型。 11. **Validation**:Spring提供了数据验证机制,可以通过`@Valid`注解和Validator接口实现对表单数据的校验。 ...
这篇博文(尽管描述为空,但提供了链接)很可能是关于创建一个基本的Spring MVC项目并使用注解来管理控制器、视图解析和其他关键组件的教程。 1. **Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了...
Servlet JSP和Spring MVC初学指南
Spring MVC的`@RequestBody`注解会使用默认的`HttpMessageConverter`(如`MappingJackson2HttpMessageConverter`)来将JSON字符串转换为Java对象。 4. **问题及解决方案** - **400 Bad Request**:如果JSON数据...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
当用户访问`/hello`时,`hello()`方法会被调用,返回的字符串“hello”将被解析为视图名称。 视图解析器如InternalResourceViewResolver需要在`applicationContext.xml`中配置,以确定如何将视图名称映射到实际的...
当前端提交包含日期字符串的JSON时,如`"birthday":"1983-03-18"`,Spring Boot默认会将这个字符串解析为时间戳,而不是转换为Date对象。因此,在响应到前端时,`birthday`字段显示为时间戳,而不是日期字符串。 ...
在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...