`
GodJohnny
  • 浏览: 93921 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring使用FastJson作为消息转换器时,不能使用Swagger的问题

 
阅读更多
    因为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);
		}
	}
}
分享到:
评论
1 楼 18318726484 2018-01-11  
你应该把导入的包也写在上面,这样更直观!

相关推荐

    springboot 使用spring cache缓存 和 使用fastjson配置redis系列化

    这样,我们不仅可以利用Spring Cache简化缓存管理,还能利用Fastjson的高效序列化能力确保数据在Redis中的正确存储和读取。在实际开发中,根据项目的具体需求,可能还需要对序列化策略、缓存策略、过期策略等进行更...

    SpringBoot中自定义消息转换器示例源码

    Spring Boot默认提供了多种消息转换器,如FastjsonHttpMessageConverter、Jackson的MappingJackson2HttpMessageConverter等。然而,在某些特定场景下,我们可能需要自定义消息转换器来满足特定的序列化或反序列化...

    springboot2.0整合fastjson以及各种使用实例

    1. **序列化和反序列化**:Fastjson能将Java对象转换为JSON字符串,也能将JSON内容解析为Java对象。这对于处理HTTP请求和响应中的JSON数据非常有用。 2. ** jsonObject与JSONArray**:`JSONObject`代表JSON对象,`...

    SpringMVC+fastjson+Swagger集成示例源码

    在这个集成示例中,SpringMVC作为Web应用的基础架构,Fastjson用于在后端和前端之间进行数据交换,而Swagger则负责API的文档化和测试。以下是集成步骤的简要概述: 1. 引入依赖:在项目的`pom.xml`文件中,添加...

    fastjson,方便json转换

    实现json转换,fastjson json json转换,可以帮助开发中涉及json格式处理的程序猿。

    【Gson+fastjson】json转换工具

    在Java开发中,为了方便地进行JSON与Java对象之间的转换,我们常常会使用到Gson和Fastjson这两个库。 **Gson库** Gson是Google提供的一款开源库,它能够将Java对象转换为JSON字符串,同时也能够将JSON内容反序列...

    fastjson使用

    由于其高效、轻量级的特点,Fastjson在许多Java应用中被广泛使用,尤其是在处理大量JSON数据时。在本教程中,我们将深入探讨Fastjson的基本用法,包括序列化和反序列化。 ### 1. **序列化** **序列化**是指将Java...

    Springboot整合shiro、ehcace、redis、spring data jpa,swagger、fastjson等资源

    springboot完美整合shiro、ehcache、redis、spring data jpa,swagger、fastjson,后续继续补充,适合初中级开发练习掌握框架,代码下载可直接运行,测试已通过

    使用fastjson实现对象和json串之间的相互转换的jar包

    此外,Fastjson的性能表现优秀,处理大量数据时依然能保持高效的运行速度。 在实际开发中,为了在项目中使用Fastjson,我们需要将"json格式转换依赖jar包"引入到构建工具(如Maven或Gradle)的依赖管理中。如果是...

    springmvc+fastjson demo

    3. **Spring MVC 中使用 Fastjson**:在 Spring MVC 中,Fastjson 可用于接收 JSON 格式的请求参数,或者将处理结果转换成 JSON 响应。例如,使用 `@RequestBody` 注解接收 JSON 数据,使用 `@ResponseBody` 注解将...

    C#简单快速的json组件fastJSON使用介绍.docx

    fastJSON 使用介绍 fastJSON 是一个快速的 JSON 组件,可以用于 C# 中对 JSON 数据的序列化和反序列化。下面是关于 fastJSON 的知识点: fastJSON 简介 fastJSON 是一个开源的 JSON 序列化组件,可以用于 C# 中对...

    fastJSON

    博主通常会在这样的文章中分享关于如何使用fastJSON进行数据转换、优化性能以及解决常见问题的经验。由于没有实际内容可以引用,我们将基于fastJSON的一般知识来展开讨论。 1. **JSON简介**: JSON(JavaScript ...

    fastjson包和使用说明

    4. **类型安全**:Fastjson支持类型检查,当尝试将JSON数据转换为特定类型的Java对象时,如果数据类型不匹配,它会抛出异常,从而避免潜在的错误。 5. **动态操作JSON**:Fastjson还允许动态操作JSON对象,例如通过...

    retrofit-converter-fastjson,改造变频器fastjson.zip

    转换器FastJSON

    fastjson jar 使用详解 实例

    Fastjson是阿里巴巴开发的一款高性能的Java JSON库,它能够实现JSON和Java对象之间的相互转换,极大地简化了JSON在Java应用中的使用。Fastjson的特点在于其高效性和易用性,不仅解析速度较快,而且API设计简洁明了,...

    fastjson使用案例源码

    - Fastjson在设计时就注重了性能,但仍有多种优化策略,如预编译、开启混淆模式等,可提高处理大量数据时的效率。 通过分析和学习这个"JavaTest"源码,我们可以看到Fastjson如何在实际项目中被运用,包括不同场景...

    fastjson各版本jar包以及使用方法

    1. **类型转换**:Fastjson支持自定义类型转换器,通过`@JSONField(serializeUsing=, deserializeUsing=)`注解实现。 2. **忽略字段**:使用`@JSONField(serialize=false, deserialize=false)`注解可忽略特定字段。...

    fastjson定制工程,别名配置化

    4. 使用Spring框架进行集成,可以利用Spring的自动装配(AutoConfiguration)和Bean后处理器(BeanPostProcessor)特性,实现对Fastjson配置的自动加载和应用。 5. 这种方式的优势在于,当字段别名需要更新时,只需...

    fastjson-1.2.58.rar

    3. 高性能:Fastjson设计之初就考虑了性能问题,它的解析速度和生成速度在同类库中都是佼佼者,特别是在处理大量数据时,优势更加明显。 二、JSON与XML互转 1. JSON转XML:Fastjson提供了`JSONPath.toXMLString...

    Spring Boot使用FastJson解析JSON数据的方法

    通过以上两种方式中的任意一种配置,Spring Boot就会使用FastJson作为默认的JSON处理库。在实际应用中,可以根据自己的需求来选择配置方式。 此外,如果需要在实体类中排除某些字段不返回,可以使用@JSONField注解...

Global site tag (gtag.js) - Google Analytics