Java中將接口返回的字節串轉為文件詳解
講一下現在的需求場景
最近公司要在項目中訪問一個第三方服務,在這個第三方服務中,需要下載一個報告文件,通過一個接口反饋回來。
這個下載接口返回瞭一個字節串,如[1,2,3,4,5,6,7],當然真實的數據不會是這個樣子的。
但是我們如何將這個字節串轉成文件流呢?
接下來就一起來看看吧,也跟大傢分享一下我處理的思路。
試一下直接轉字符串後轉字節數組
我首先拿到瞭這個字節串,但是並沒有辦法直接轉成字節數組byte[]。
這個時候我想到一個方法,那就是直接講這個字節串轉成字符串,也就是下面的代碼:
Object obj = "[1,2,3,4,5,6,7]"; String string = (String) obj; byte[] bytes = string.getBytes(); InputStream inputStream = new ByteArrayInputStream(target);
很遺憾,這樣是錯的,不明所以。
沒有辦法,隻能再去另尋方法。
再試一下是不是特殊符合[],還有逗號造成的失敗。
於是我又再次嘗試瞭這種方式,代碼給到大傢,如下:
Object obj = "[1,2,3,4,5,6,7]"; String string = (String) obj; byte[] bytes = string.getBytes(); InputStream inputStream = new ByteArrayInputStream(target);
如上代碼,我們先將字符串中的逗號和中括號替換掉,然後再轉成字節數組。
可惜,同樣也失敗瞭,沒辦法隻能再次另尋他法。
最後還是不想浪費太多時間,找瞭一下第三方服務是否提供瞭代碼示例
哇唔,還真有的,於是真給瞭一段代碼示例,雖然有點草率,但是很關鍵。
我把代碼示例中如何轉字節數組的方法貼出來,供大傢學習一下。
Object obj = "[1,2,3,4,5,6,7]"; String string = (String) obj; ObjectMapper mapper = new ObjectMapper(); byte[] target = mapper.readValue(string , new TypeReference<byte[]>() { });
最佳解決方案也就這個瞭,不免感嘆,大傢還是要去多多利用可以使用的資源,有些情況可能很簡單就能解決瞭,沒必要去太過深扣,希望大傢可以有所借鑒吧。
總結
到此這篇關於Java中將接口返回的字節串轉為文件的文章就介紹到這瞭,更多相關Java接口返回字節串轉文件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 解決ObjectMapper.convertValue() 遇到的一些問題
- 詳解Jackson的基本用法
- 使用ObjectMapper把Json轉換為復雜的實體類
- Spring JPA的實體屬性類型轉換器並反序列化工具類詳解
- 如何解決springmvc文件下載,內容損壞的問題