Swagger 2 顯示的是XML而不是JSON格式解決方法

作者: 時間: 2019-05-27 分類: 技術文章 | 0條評論 |

最近一直在用Yapi+Swagger編寫API接口文檔的時候,一直沒什么問題,但是今天有一個項目卻發現不對勁,因為Swagger的JSON無法自動同步到Yapi,導致一直無法在線自動生成最新文檔。后來去查看,才發現是因為Swagger生成的JSON外面多了一層<json>XXX</json>,也就是變成了xml類型。

Swagger 2 顯示的是XML而不是JSON格式解決方法

Swagger 2 顯示的是XML而不是JSON格式解決方法

異常原因(第1種):

因為Spring MVC默認讓服務器在瀏覽器中呈現XML而不是JSON(其實這個只是表現原因,根本原因是下面第2個原因導致)。

解決方法:

@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        List<MediaType> list = new ArrayList<>();
        list.add(MediaType.APPLICATION_JSON_UTF8);
        list.add(new MediaType("text", "html", Charset.forName("UTF-8")));
        list.add(new MediaType("application", "*+json", Charset.forName("UTF-8")));
        converter.setSupportedMediaTypes(list);
        converters.add(converter);
    }
}


Swagger 2 顯示的是XML而不是JSON格式解決方法

Swagger 2 顯示的是XML而不是JSON格式解決方法

其實你按照上面的做法處理,基本上可以解決問題,但是如果你仔細看,就會發現 /v2/api-docs?group=oneid 接口返回的 content-type 卻是text/html,如果你想徹底解決問題,那么就看第2種方法。

異常原因(第2種):

真實原因是項目里面使用了 jackson-dataformat-xml 依賴包,導致項目被默認改成xml類型輸出。

解決方法:

File——>Project Structure——>Libraries——>找到“jackson-dataformat-xml”把它刪除引用即可。刪除之后,就徹底完事了~~并不需要添加第1種方法的代碼,僅僅是刪除引用就行。如果你不能刪除引用,那就用第1種方法吧!

寫在后面:

Swagger 2 顯示的是XML而不是JSON格式解決方法

Swagger 2 顯示的是XML而不是JSON格式解決方法

如果你們發現,按照上面2種方法做了之后,swagger這邊全都正常了,但是Yapi那邊無法同步接口數據,請檢查你們的API注解,一般都是因為注解寫錯了,最常見的就是注解里面有JSON字符串,但是沒有轉義,然后一直報錯。解決方法就是轉義~~如上圖~~

All by flydoos 2019-05-27

本文采用 CC協議 發布,轉載請注明:轉載自 吾樂吧軟件站

本文鏈接地址:http://www.pllkp.tw/?p=29985

發表評論

?
微軟MSDN資源免費訂閱,MSDN 我告訴你 越南美女捕鱼捕走光视频 快乐赛车 极速时时彩群 时时彩四星跨度计划 东方6+1 极速彩票安卓 重庆快乐十分开到几点 玩pk10有真正赚的人吗 财富码报纸图 吉林时时彩票开奖号码 p3试机号 陕西快乐十分玩法 甘肃11选5开奖结果61 平特王日报128期 吉林时时彩开奖结果查询 qq英雄杀 湖北快3走势图下载安装