1. 程式人生 > >解決Spring boot中使用Gson,Swagger2 api-docs無法正常顯示json問題

解決Spring boot中使用Gson,Swagger2 api-docs無法正常顯示json問題

由於專案中存在自定義型別,而Jackson的序列化與反序列化又不太會玩,轉而使用Gson,由於有生成Restful API文件的需求,使用Swagger2,最終api-docs無法正常顯示(使用Jackson一切正常):

{
"value": "{\"swagger\":\"2.0\",\"info\":{\"description\":\"this is restful api document\",\"version\":\"1.0.0\",\"title\":\"MyApp API文件\",\"contact\":{\"name\":\"xxx\",\"url\":\"http://xxxx.com\",\"email\":\"
[email protected]
\"}},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"tags\":[{\"name\":\"login-controller\",\"description\":\"Login Controller\"},{\"name\":\"user-controller\",\"description\":\"User Controller\"}],\"paths\" ......

同時也導致/swagger-ui.html無法正常顯示。

這裡寫圖片描述

原因:Gson的序列化問題
解決方法:自定義Gson序列化

//***注意***:這裡的`Json
`是`springfox.documentation.spring.web.json.Json`包下的類 class springfoxJsonToGsonAdapter : JsonSerializer<Json> { override fun serialize(json: Json, type: Type, jsc: JsonSerializationContext): JsonElement = JsonParser().parse(json.value()) }

接下來註冊到GsonHttpMessageConverter

//***注意***:`Json`同上,為`springfox.documentation.spring.web.json.Json`包下的類

class IGsonHttpMessageConverter : GsonHttpMessageConverter() {
    init {
        //自定義Gson介面卡
        super.setGson(GsonBuilder()
                .registerTypeAdapter(Json::class.java, springfoxJsonToGsonAdapter())
                .create())
    }
}

接下來訪問http://localhost:8080/v2/api-docs,得到正常結果

{
    "swagger": "2.0",
    "info": {
        "description": "this is restful api document",
        "version": "1.0.0",
        "title": "MyApp API文件",
        "contact": {
            "name": "userName",
            "url": "http://xxxuri.com",
            "email": "[email protected]"
        }
    },
    "host": "localhost:8080",
    "basePath": "/",
    "tags": [{
        "name": "login-controller",
        "description": "Login Controller"
    }, {
        "name": "user-controller",
        "description": "User Controller"
    }],
    "paths": {
        "/login/verify/{userId}": {
            "get": {
                "tags": [
                    "login-controller"
                ],
                "summary": "askGroupsAndRoles",
                "operationId": "askGroupsAndRolesUsingGET",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "*/*"
                ],
                "parameters": [{
                    "name": "userId",
                    "in": "path",
                    "description": "userId",
                    "required": true,
                    "type": "string"
                }],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Not Found"
                    }
                }
            }
        }
}

Swagger UI 也正常顯示。

問題解決。

相關推薦

解決Spring boot使用GsonSwagger2 api-docs無法正常顯示json問題

由於專案中存在自定義型別,而Jackson的序列化與反序列化又不太會玩,轉而使用Gson,由於有生成Restful API文件的需求,使用Swagger2,最終api-docs無法正常顯示(使用Jack

springboot全域性異常處理(包含404錯誤處理) 一:解決spring bootrest介面404,500等錯誤返回統一的json格式(備用地址) 二:SpringBoot入門——區域性與全域性的異常處理(備用地址)

個人整理參考文件: 一:解決spring boot中rest介面404,500等錯誤返回統一的json格式(備用地址) 二:SpringBoot入門——區域性與全域性的異常處理(備用地址) 三:SpringBoot全域性異常處理(備用地址) 四:sprin

解決spring bootrest介面404,500等錯誤返回統一的json格式

在開發rest介面時,我們往往會定義統一的返回格式,列如: { "status": true, "code": 200, "message": null, "data": [ { "id": "101", "name": "jack" },

Spring-boot@ConfigurationProperties@Value@PropertySource

1.利用@ConfigurationProperties獲取配置的值,@ConfigurationProperties是springboot提供的基於安全型別的配置放置。     application.properties spring.redis.host=127.0.0.1

記錄初學Spring boot使用GraphQL編寫API的幾種方式

tor resolv dev star ase tps food env cut Spring boot+graphql 一、使用graphql-java-tools方式 <dependency> <groupId>com.graphql-j

解決spring boot swagger ui使用 nginx 部署後無法使用問題

spring boot 使用 swagger ui做介面文件, 本地測試沒有問題,但是部署到linux上時, 訪問域名,就會得到如下結果:   解決辦法: 修改nginx配置檔案: nginx/conf.d/default.conf 原檔案: server {

tomcat啟動後http://localhost:8080無法正常顯示

問題描述:在java中可以成功啟動tomcat,且正常顯示專案內容,但在網頁中輸入http://localhost:8080無法正常顯示。 原因 eclipse將tomcat的專案釋出目錄重定向了,導致無法正常訪問。同時在tomcat安裝目錄下的we

3.Spring Boot使用Swagger2構建強大的RESTful API文檔

pack 效果 type 現象 業務邏輯 blank depend imp any 原文:http://www.jianshu.com/p/8033ef83a8ed 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構

Spring Boot使用Swagger2構建強大的RESTful API文檔

TP app 接口 ear tro 參數 stc 業務邏輯 schema 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的原因,這

Spring Boot使用Swagger2構建強大的RESTful API文件【轉】

由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的使用者會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者Web前端。

Spring Boot 使用 Swagger2 構建 RESTFUL API 文件

由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的使用者會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者Web前端。

Spring Boot使用Swagger2構建強大的RESTful API文件

由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的使用者會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者Web前端。 這樣一來,我們

Swagger2spring boot的運用- API Docsspring boot詳細配置生成及各個平臺介面網路請求程式碼生成Swagger-codegen-cli運用

好久沒有寫學習部落格了。在最近的工作中,學習到了一些比較好的工具。可以提高前後臺工作人員,測試人員的工作效率。甚至可以給產品提供相關直觀的參考。也利於版本迭代api的系統管理,現部落格記錄下來,有什麼不足之處請各位大牛指正!有很多因素促成了Swagger在構建RESTful

Spring boot引數注入@Value失效以及解決方案

問題 專案中我們都要要儘量避免將引數直接寫程序序裡,這樣一旦需要需要修改配置,我們可以只需要在配置檔案裡做修改,而不必在程式裡找,這樣可以避免很多錯誤,個人專案可能不會注意這一點,但是需要上線釋出的專案,Configure配置檔案就顯得非常重要!現在很多公司其

只需一步Spring Boot統一Restful API返回值格式與統一處理異常

統一返回值 在前後端分離大行其道的今天,有一個統一的返回值格式不僅能使我們的介面看起來更漂亮,而且還可以使前端可以統一處理很多東西

spring-boot實戰【06】【轉】:Spring Boot使用Swagger2

des values 產生 service sof div 解決 整合 data 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的

Spring Boot 配置定時任務實現多線程操作

pre log pri http code china 部分 多線程操作 .net 參考的代碼部分 https://git.oschina.net/jokerForTao/spring_boot_schedule 一目了然!Spring Boot 中配置定時任務,實現

關於Spring boot讀取屬性配置文件出現中文亂碼的問題的解決(針對application.properties)

HA inf encoding 屬性 文件中 ide for 出現 spring 兩種方法: 方法一:在配置文件中設置中文編碼: banner.charset=utf-8server.tomcat.uri-encoding=UTF-8spring.http.encoding

使用Logstash同步數據至ElasticsearchSpring Boot集成Elasticsearch實現搜索

開啟 stash auto -a zab rest driver tid list 安裝logstash、同步數據至ElasticSearch 為什麽使用logstash來同步,CSDN上有一篇文章簡要的分析了以下幾種同步工具的優缺點:https://blog.csdn.

記錄Spring Boot大坑一個在bean如果有@Test單元測試不會註入成功

記錄 one except frame oot beans org init def 記錄Spring Boot大坑一個,在bean中如果有@Test單元測試,不會註入成功 記錄Spring Boot大坑一個,在bean中如果有@Test單元測試,不會註入成功 記錄Sp