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 我告訴你 越南美女捕鱼捕走光视频 北京塞车pk10直播下载 北京时时赛车论坛 850通比牛牛作弊手法 在线21点游戏平台 时时彩后三组六怎么玩 牛材网预测 欢乐二人麻将免费下载 重庆时时开奖官方网站 江苏五分 彩票北京pk10下载 重庆十分彩开奖号码 天橙娱乐 pk10单期计划网页 欢乐生肖全天免费计划 网络扎金花太坑人 欢乐生肖开奖记录