1. 程式人生 > >Android端使用Retrofit2+OkHttp3+FastJson快速構建前後端完全分離專案

Android端使用Retrofit2+OkHttp3+FastJson快速構建前後端完全分離專案

Hello,大家好,有一段時間沒更新部落格了,因為最近有點忙。話不多說,切入正題!

  之前自己寫的一個Android專案,但是這個專案架構並不是很好,專案各模組的依賴性很強,尤其是資料和介面這塊,所以我想把前後端分離的概念應用到本專案中。

  專案後端使用SSM框架開發資料介面,然後Android端使用Retrofit2+OkHttp3解析json,但是就在這個過程中,發生了一個讓我很費解的bug。本片博文主要來記錄一下這個bug,希望能幫助到大家。

  一、後端JSON返回格式

        

這是後端返回的JSON格式,很標準

二、Android端解析JSON

        問題就發生在解析資料的時候,之前我用Gson解析的時候,Gson一直報JSON語法錯誤,無法解析的異常,然後從網上找了很多解決方法,嘗試以後發現都不可以。

        後來想到SSM框架預設使用的Jackson來處理Json,然後我就想在Android裡面也用Jackson,但是卻發現Android沒有提供Jackson的convert,需要自己去寫,然後果斷pass。

        最後我想到在我一個J2EE專案裡面,我用的是FastJson來處理JSON,然後從網上找到了這方面的方法,在Android裡面集成了FastJson,然後寫了一行程式碼就搞定了這個bug。程式碼奉上:

Android依賴:

解析JSON的程式碼:

這裡有一個坑,不知道是不是Retrofit2的bug,就是在baseUrl裡面填寫介面地址的時候,如果把整個地址放進去,Retrofit解析的時候只會解析到域名結束,最終返回一個網頁,並不是返回的json資料,解決這個問題,我們要在Android的Service層去處理,拼接這個介面地址:

      第一:在baseUrl處填寫介面地址的host地址:

      第二:在Android的Service層通過請求註解填寫剩餘介面地址的詳細部分:

這樣,Retrofit在解析的時候就會自動拼接介面地址,從而返回正確的Json資料

最終這個問題還是解決了,花費了我很長時間,如果你也想這樣演進你的專案,相信本篇博文會幫助到你,歡迎大家留言評論,謝謝!