IT踩坑日常- bom頭標記導致json無法解析

閱讀時間約 3 分鐘

前言

在專案中與廠商測試的過程中,發現對方API回傳的json字串出現無法解析的狀況,此篇記錄發現過程與解決的紀錄,希望之後有踩到坑的同仁可以少跌一些坑。

此次主要業務是與廠商做API介接

API(Post)-Response是用Json格式

result: 成功與否(true/false) 

all_count:總筆數

list []:票號約定回傳清單

tran_code:異動別(A=增加,D=刪除)

tkt_no:票號

tkt_tp:票種(01=成人,02=愛心,03=團體)

dep_id:單位代碼

date:約定日期/傳輸日期

status:狀態(00=異動成功,01=異動)


踩坑過程

接收到回傳的json結果為以下值

{"result":"true", "all_count":1, "list":[{"tran_code":"A", "tkt_no":"AKY0727","tkt_tp":"01","dep_id":"00R","date":"20240401","status":"00"}]}

程式在解析時丟出了無法解析的錯誤,乍看之下此字串是正常格式的json字串,但將此字串貼在記事本儲存時,會提醒你內文中含有urldecode的字元,儲存後的內容發生變化之類的提醒,再開啟文件之後發現原本的json字串變成

?{"result":"true", "all_count":1, "list":[{"tran_code":"A", "tkt_no":"AKY0727","tkt_tp":"01","dep_id":"00R","date":"20240401","status":"00"}]}

但實際上此字元也並非字面上看到的是藏著?的字元而是Bom表標頭的標記符號(不佔空間的空白,unicode編碼中表示:\uFEFF)導致,當json Response字串中藏著Bom標記符號時,預設使用UTF-8讀取json格式,就會遇到這個問題。

解決方法

1.程式面

讀取Response json或帶有Bom表的檔案內容時,先對此字串做過濾後,再做解析處理

//過濾掉Bom標頭字元​
responseBody= responseString.Trim(new char[] { '\uFEFF'});

//再將json string 解析成物件​
var result = JsonConvert.DeserializeObject<DeserializeObj>(responseBody);


2.檔案面

如果是檔案的字串藏有Bom的標頭符號,可用NotePad++ 開啟文件後在上面的編碼選取轉換UTF-8後再另存新檔,之後程式如果要讀取檔案內容應該讀取新的存檔

raw-image



參考資料

[C#] BOM 隱士


8會員
19Content count
此篇教學 : 使用GitHub架設免費的部落格網站,搭上Hexo靜態模板,在主題頁面中尋找屬於自己的風格套版,輕鬆擁有自己的Blog外,加上留言板/SEO等設定在記錄生活同時也增進與讀者的互動頻率。
留言0
查看全部
發表第一個留言支持創作者!
DavidHi的沙龍 的其他內容
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
資訊保安對於企業的資訊科技部門是越來越重要,有很多企業己經開始將資訊保安從日常的資訊科技拆分,以避免資訊科技部門因日常繁重的技術支援無法同時兼顧資訊保安的應對。 而資訊保安和IT審計是密不可分的。如果說資訊保安是日常的防御工事,那IT審計就是比起防御更能預先部署的可預視的一環。 過往IT審計可能
Thumbnail
2022.06.17 該來的還是來了, 終於來到這一天了 --> RI 經過一年來的舖陳, FCC --> RI --> PIP --> Getout 這也是預期中的事, 沒有什麼好抱怨的, 唯一給自己的台階下, 就是自己的能力就到這裡了.
Thumbnail
睇到呢度,雖然劇情好令人氣憤,但劇本就叫人拍案叫絕:呢個咪19年拗緊嘅嘢囉?政府咁大個集團,唔信佢仲信邊個?送中咪送中囉,係身有屎嘅人先要驚嘅姐。甚至連$10都唔使比,都大把人無條件支持政府,反過來斥責識得思考嘅人。民主自由呢啲嘢,大眾根本唔在乎,原來我哋重視嘅嘢,係一文不值。因為大部分人就係咁現實
Thumbnail
It steers clear of weight reduction, just to improve yourself and better! Foster these 8 positive routines together.  Numerous young ladies nearly tr
作者:科技媽媽 職業:IT業採購 資歷:16年 我任職的外商公司,企業文化中強調「人性管理」、「尊重」、 「信任」,被業界稱為「幸福企業」, 雖然公司給員工較彈性的上下班時間,公司主管也常將「work and life balance」(工作與生活平衡)掛在嘴邊,但是,一旦忙起來,依舊沒日沒夜...
我承認,我真的不是很懂…。 我曾進入台灣前三大電信業者的資訊機房,那時我懷抱一個夢想…,我想成為在機房工作的女子……。 隨著我的「夢」,真的是夢,畢竟…
我決定從門檻最低,也相對有自信的職種「システムエンジニア」著手,顧名思義…
說到上回文末的「ITコンサルタント」,我特別查了一下它的意思,「コンサルタント」是顧問的意思,所以顧名思義,此職種即為「IT顧問」。這是什麼鬼??
Thumbnail
It is written! 為什麼是命中註定? 因為 一切都早已被寫在未來裡 如果 你願意用最單純的愛去找尋 就有希望! [貧民百萬富翁]獲得2009奧斯卡八項大獎,包括最佳影片、最佳導演、最佳原創電影歌曲、最佳電影配樂、最佳音效、最佳剪輯、最佳攝影、最佳改編劇本。原著《Q&A》是印度外交
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
資訊保安對於企業的資訊科技部門是越來越重要,有很多企業己經開始將資訊保安從日常的資訊科技拆分,以避免資訊科技部門因日常繁重的技術支援無法同時兼顧資訊保安的應對。 而資訊保安和IT審計是密不可分的。如果說資訊保安是日常的防御工事,那IT審計就是比起防御更能預先部署的可預視的一環。 過往IT審計可能
Thumbnail
2022.06.17 該來的還是來了, 終於來到這一天了 --> RI 經過一年來的舖陳, FCC --> RI --> PIP --> Getout 這也是預期中的事, 沒有什麼好抱怨的, 唯一給自己的台階下, 就是自己的能力就到這裡了.
Thumbnail
睇到呢度,雖然劇情好令人氣憤,但劇本就叫人拍案叫絕:呢個咪19年拗緊嘅嘢囉?政府咁大個集團,唔信佢仲信邊個?送中咪送中囉,係身有屎嘅人先要驚嘅姐。甚至連$10都唔使比,都大把人無條件支持政府,反過來斥責識得思考嘅人。民主自由呢啲嘢,大眾根本唔在乎,原來我哋重視嘅嘢,係一文不值。因為大部分人就係咁現實
Thumbnail
It steers clear of weight reduction, just to improve yourself and better! Foster these 8 positive routines together.  Numerous young ladies nearly tr
作者:科技媽媽 職業:IT業採購 資歷:16年 我任職的外商公司,企業文化中強調「人性管理」、「尊重」、 「信任」,被業界稱為「幸福企業」, 雖然公司給員工較彈性的上下班時間,公司主管也常將「work and life balance」(工作與生活平衡)掛在嘴邊,但是,一旦忙起來,依舊沒日沒夜...
我承認,我真的不是很懂…。 我曾進入台灣前三大電信業者的資訊機房,那時我懷抱一個夢想…,我想成為在機房工作的女子……。 隨著我的「夢」,真的是夢,畢竟…
我決定從門檻最低,也相對有自信的職種「システムエンジニア」著手,顧名思義…
說到上回文末的「ITコンサルタント」,我特別查了一下它的意思,「コンサルタント」是顧問的意思,所以顧名思義,此職種即為「IT顧問」。這是什麼鬼??
Thumbnail
It is written! 為什麼是命中註定? 因為 一切都早已被寫在未來裡 如果 你願意用最單純的愛去找尋 就有希望! [貧民百萬富翁]獲得2009奧斯卡八項大獎,包括最佳影片、最佳導演、最佳原創電影歌曲、最佳電影配樂、最佳音效、最佳剪輯、最佳攝影、最佳改編劇本。原著《Q&A》是印度外交