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 我告訴你 越南美女捕鱼捕走光视频 实战百家乐 河北快3 浙江快乐12任4 内蒙古时时十一选五开奖结果查询 重庆时时及走势图 重庆时时彩在线计划网页版 北京十一选五中走势图 九龙内部玄机 黑龙江快乐十分最大奖 福利票福建时时走势图 极速赛走势分析app 上海时时乐销售点 一尾中特平 云南快乐10分玩法 体彩总进球 四川时时下载手机版