因为Fast作为JSON的序列化与反序列化一些优点,在项目中使用了FastJson库的FastJsonHttpMessageConverter4 作为Spring的消息转换器,可替换后,发现http://localhost:8081/swagger-ui.html页面能打开,但API内容都不见了。但v2/api-docs倒是能打开。
替换回Spring默认的Jackson2,页面打开正常。经过抓包,发现使用不同的转换器时,页面打开请求的URL是不同的。使用FastJson时,到swagger-resources/configuration/ui请求后,就结束了。而默认的Jackson2在此之后,又多了几个请求。对比swagger-resources/configuration/ui请求的响应数据,发现Jacson2比FastJson多了几个JSON数据项。
再返回系统中,查看日志。Debug跟踪发现MessageConverter的writeInternal方法内,写入的是UiConfiguration对象。而该类的一些属性使用了一些Jackson2的注解。正是这些注解的属性在FastJson中没有输出出来。这个类的输出,发现使用Jackson2来进行。
于是新写一个类,继承FastJsonHttpMessageConverter4 ,覆写writeInternal方法。使用该类作为消息转换器。测试正常。
public class SwaggerFastJsonHttpMessageConverter4 extends FastJsonHttpMessageConverter4 {
private ObjectMapper mapper = new ObjectMapper();
@Override
protected void writeInternal(Object obj, //
Type type, //
HttpOutputMessage outputMessage //
) throws IOException, HttpMessageNotWritableException {
if (type == springfox.documentation.swagger.web.UiConfiguration.class) {
HttpHeaders headers = outputMessage.getHeaders();
ByteArrayOutputStream outnew = new ByteArrayOutputStream();
mapper.writeValue(outnew, obj);
outnew.flush();
headers.setContentLength(outnew.size());
OutputStream out = outputMessage.getBody();
outnew.writeTo(out);
outnew.close();
} else {
super.writeInternal(obj, type, outputMessage);
}
}
}
分享到:
相关推荐
这样,我们不仅可以利用Spring Cache简化缓存管理,还能利用Fastjson的高效序列化能力确保数据在Redis中的正确存储和读取。在实际开发中,根据项目的具体需求,可能还需要对序列化策略、缓存策略、过期策略等进行更...
Spring Boot默认提供了多种消息转换器,如FastjsonHttpMessageConverter、Jackson的MappingJackson2HttpMessageConverter等。然而,在某些特定场景下,我们可能需要自定义消息转换器来满足特定的序列化或反序列化...
1. **序列化和反序列化**:Fastjson能将Java对象转换为JSON字符串,也能将JSON内容解析为Java对象。这对于处理HTTP请求和响应中的JSON数据非常有用。 2. ** jsonObject与JSONArray**:`JSONObject`代表JSON对象,`...
在这个集成示例中,SpringMVC作为Web应用的基础架构,Fastjson用于在后端和前端之间进行数据交换,而Swagger则负责API的文档化和测试。以下是集成步骤的简要概述: 1. 引入依赖:在项目的`pom.xml`文件中,添加...
实现json转换,fastjson json json转换,可以帮助开发中涉及json格式处理的程序猿。
在Java开发中,为了方便地进行JSON与Java对象之间的转换,我们常常会使用到Gson和Fastjson这两个库。 **Gson库** Gson是Google提供的一款开源库,它能够将Java对象转换为JSON字符串,同时也能够将JSON内容反序列...
由于其高效、轻量级的特点,Fastjson在许多Java应用中被广泛使用,尤其是在处理大量JSON数据时。在本教程中,我们将深入探讨Fastjson的基本用法,包括序列化和反序列化。 ### 1. **序列化** **序列化**是指将Java...
springboot完美整合shiro、ehcache、redis、spring data jpa,swagger、fastjson,后续继续补充,适合初中级开发练习掌握框架,代码下载可直接运行,测试已通过
此外,Fastjson的性能表现优秀,处理大量数据时依然能保持高效的运行速度。 在实际开发中,为了在项目中使用Fastjson,我们需要将"json格式转换依赖jar包"引入到构建工具(如Maven或Gradle)的依赖管理中。如果是...
3. **Spring MVC 中使用 Fastjson**:在 Spring MVC 中,Fastjson 可用于接收 JSON 格式的请求参数,或者将处理结果转换成 JSON 响应。例如,使用 `@RequestBody` 注解接收 JSON 数据,使用 `@ResponseBody` 注解将...
fastJSON 使用介绍 fastJSON 是一个快速的 JSON 组件,可以用于 C# 中对 JSON 数据的序列化和反序列化。下面是关于 fastJSON 的知识点: fastJSON 简介 fastJSON 是一个开源的 JSON 序列化组件,可以用于 C# 中对...
博主通常会在这样的文章中分享关于如何使用fastJSON进行数据转换、优化性能以及解决常见问题的经验。由于没有实际内容可以引用,我们将基于fastJSON的一般知识来展开讨论。 1. **JSON简介**: JSON(JavaScript ...
4. **类型安全**:Fastjson支持类型检查,当尝试将JSON数据转换为特定类型的Java对象时,如果数据类型不匹配,它会抛出异常,从而避免潜在的错误。 5. **动态操作JSON**:Fastjson还允许动态操作JSON对象,例如通过...
转换器FastJSON
Fastjson是阿里巴巴开发的一款高性能的Java JSON库,它能够实现JSON和Java对象之间的相互转换,极大地简化了JSON在Java应用中的使用。Fastjson的特点在于其高效性和易用性,不仅解析速度较快,而且API设计简洁明了,...
- Fastjson在设计时就注重了性能,但仍有多种优化策略,如预编译、开启混淆模式等,可提高处理大量数据时的效率。 通过分析和学习这个"JavaTest"源码,我们可以看到Fastjson如何在实际项目中被运用,包括不同场景...
1. **类型转换**:Fastjson支持自定义类型转换器,通过`@JSONField(serializeUsing=, deserializeUsing=)`注解实现。 2. **忽略字段**:使用`@JSONField(serialize=false, deserialize=false)`注解可忽略特定字段。...
4. 使用Spring框架进行集成,可以利用Spring的自动装配(AutoConfiguration)和Bean后处理器(BeanPostProcessor)特性,实现对Fastjson配置的自动加载和应用。 5. 这种方式的优势在于,当字段别名需要更新时,只需...
3. 高性能:Fastjson设计之初就考虑了性能问题,它的解析速度和生成速度在同类库中都是佼佼者,特别是在处理大量数据时,优势更加明显。 二、JSON与XML互转 1. JSON转XML:Fastjson提供了`JSONPath.toXMLString...
通过以上两种方式中的任意一种配置,Spring Boot就会使用FastJson作为默认的JSON处理库。在实际应用中,可以根据自己的需求来选择配置方式。 此外,如果需要在实体类中排除某些字段不返回,可以使用@JSONField注解...