【程式語言 — Go】關於JSON序列化、反序列化

閱讀時間約 2 分鐘

會撰寫這個篇章主要是使用Go語言進行軟體開發時發現到原來跟我們熟悉的Javascript差異這麼多,在Javascript的世界裡很容易對JSON格式的資料進行處理,但不同的是Golang是一種靜態語言,預設不希望我們動態的去擴增屬性,這樣比較安全,但也帶來了一些麻煩,比如說某些不該被過濾掉的卻被過濾掉了,跟我們所預期的結果不同,而以下就是一個簡單的案例,我們希望值雖為false仍需要被保留,才能正常進行運算,但預設的情況下卻沒這麼美好,總會有一些坑要踩,就讓我們來看看到底是什麼樣的坑吧!

用omitempty來過濾掉空的property造成bool false被過濾掉

一般來說我們會這樣定義Struct來接收前端請求的POST Body
type UpdateReq struct {
Name string `json:"name,omitempty" bson:"name,omitempty"`
Enabled bool `json:"enabled,omitempty" bson:"enabled,omitempty"`
}
那假設POST Body是這樣
{
enabled: false
}
此時我們利用gin的BindJSON來Unmarshal
var body domain.UpdateReq
c.BindJSON(&body)
結果印出來會是
{
}
上述結果的name被我們過濾掉是正常,但enabled就我們的需求上來看,不應該被過濾掉才對。
所以我們應該將bool、int這類的型態宣告為指標,如下:
type UpdateReq struct {
Name string `json:"name,omitempty" bson:"name,omitempty"`
Enabled *bool `json:"enabled,omitempty" bson:"enabled,omitempty"`
}
結果如我們的預期
{
enabled: false
}
為什麼會看到廣告
95會員
234內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
程式語言:旅途啟程在一次五天的年假中,我決定開始學習Python編程。雖然最初進展順利,但後來發現自己在解題和邏輯方面遇到了困難。經過思考後,我決定轉而學習C/C++,並且制定了一個計畫,希望成為一名後端工程師。這將需要挑戰我的時間管理能力。
avatar
林昱廷
2024-06-04
[程式語言] DataCamp 使用心得與費用公開 學習Python數據分析 文末附上2024 50% off 折扣連結網路上自學程式語言的網站百百種有Coursera、Udemy、Youtube的免費資源等等。程式小白要怎麼從眾多資源中選擇最適合自己的學習平台,而我又為什麼選擇DataCamp為Python自學平台呢?原因可以分為以下幾點: DataCamp的系統性課程選擇: 有提供兩種有系統且直接能達到你
avatar
Hsinyin Chang
2024-05-26
程式語言的三個基本特性關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
avatar
Warren Lo
2024-02-27
TQC+程式語言Python3考照必勝專題~全部目錄(上下集)目錄 (功能:小叮噹的任意門,點入連結,會直接到那一題)
Thumbnail
avatar
pc000
2023-08-23
Tornado的程式語言應受言論自由的保障!先前大家為了數位中介服務法草案是否會箝制言論自由吵翻天,網路言論自由當然也是存在於Web3.0世界與幣圈,放眼現今與未來的Web3.0世界與幣圈,主要的生態系與應用大多在以太坊的智能合約與代幣經濟,而智能合約與代幣都是由程式語言所撰寫建構。但最近幣圈也出現言論自由遭到迫害的案例,也就是撰擬Torna
Thumbnail
avatar
建佑律師_NoMoreLaw
2022-09-19
【入門自學程式語言必看】學程式要注意什麼?數學不好也沒關係嗎?最近很多人私訊我他們自學遇到的瓶頸,有些人會覺得學不會程式,是自己太笨沒天分,或從小數理能力就差,才學不起來。但以我自己這些年自學程式並創業的經驗,我認為可能原因是自己操之過急了,因為想要快速達到像是轉職或是創業等等目標,所以覺得得學得越快越好。但這個領域需要的是長時間的磨練,慢慢一點點累積
Thumbnail
avatar
Benson老師教你程式學習技巧
2022-08-04
【入門自學程式語言必看】如何設定目標?【為何而學?】 相信剛入門自學程式的人都會遇到許多困難,可能教學資源太多無從下手,或是學了基礎可是無法自己寫出功能,不過最常見的應該屬目標導向的問題,就是不知道為何而學,我自己也是靠著自學製作了一個幫賣家封鎖電商黑名單的chrome插件賺取被動收入,對於設定目標有一點點心得想分享給大家:
Thumbnail
avatar
Benson老師教你程式學習技巧
2022-07-24
關於學習程式語言這件事...為什麼想學程式語言? 這個問題應該是知道我有在學程式語言的人,馬上脫口而出的問題。 對呀!WHY?一個即將邁向40大關的中年男子(從叔叔→阿伯),為什麼要這麼想不開,突然跳進一堆看不懂...呃...
Thumbnail
avatar
Kyle
2022-01-28
哪個程式語言最流行最好?世界上有最好的程式語言嗎?答案絕對是否定的,每種語言都有適合的使用時機,而也有不少程式語言是隨著時代變遷而消失的。請放下自己要學到最好語言的心態,多看多學,自然會找到適合你的語言。這篇文章會用客觀的角度跟你分享最多人使用的程式語言。
Thumbnail
avatar
工程師布萊克
2021-06-21