Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JSONEncodeで詰まった話
Search
とんとんぼ
June 04, 2023
Technology
0
190
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
Tweet
Share
More Decks by とんとんぼ
See All by とんとんぼ
Swift愛好会:What's new in Xcode16 要約
ktombow
0
560
今週のTopics:量子コンピュータ
ktombow
2
190
Flutter開発で便利だと感じた設定
ktombow
0
730
Other Decks in Technology
See All in Technology
React Server Componentは 何を解決し何を解決しないのか / What do React Server Components solve, and what do they not solve?
kaminashi
6
1.2k
OPENLOGI Company Profile for engineer
hr01
1
22k
Keynote - KCD Brazil - Platform Engineering on K8s (portuguese)
salaboy
0
120
ウェブアクセシビリティとは
lycorptech_jp
PRO
0
250
製造業の会計システムをDDDで開発した話
caddi_eng
3
930
大規模アジャイル開発のリアル!コミュニケーション×進捗管理×高品質
findy_eventslides
0
420
LINE Notify互換のボットを作った話
kenichirokimura
0
170
20250328_OpenAI製DeepResearchは既に一種のAGIだと思う話
doradora09
PRO
0
150
Agile TPIを活用した品質改善事例
tomasagi
0
290
Tirez profit de Messenger pour améliorer votre architecture
tucksaun
1
130
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
120
コード品質向上で得られる効果と実践的取り組み
ham0215
2
200
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Being A Developer After 40
akosma
90
590k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
102
18k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Rails Girls Zürich Keynote
gr2m
94
13k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
4 Signs Your Business is Dying
shpigford
183
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
39
7.2k
Practical Orchestrator
shlominoach
187
10k
Navigating Team Friction
lara
184
15k
Code Reviewing Like a Champion
maltzj
522
39k
Transcript
JSONEncoderで詰まった話 5月29日(火)Swift愛好会 とんとんぼ
自己紹介 • name: とんとんぼ • iOS & Android Dev •
23卒 新卒 • 最近、アイコンを変えました→ 旧アイコン 私が描きました
アジェンダ 1. 背景 2. 本論 3. 結論
ある日の出来事・・・
None
これ頼むわ
APIの内容 { "name" : "とんとんぼ", "age" : 24, "hobby" :
"Study Swift&Kotlin" } パラメータ名 型 必須 name String ⭕ age Int ❌ hobby String ❌ パラメータ リクエスト(例)
ageとhobbyがnilの場合 はどうすればええん?
Nullでリクエストして
None
None
None
None
None
None
None
理想 現実
ここまでが背景
ちなみに
None
None
なぜ、このようなことが起きるのか?
原因の考察 • nilをNullでエンコードするオプションは自分で書くことができるから、フレー ムワークとして用意する必要がない • Nullと欠落を同一視するAPIが多い(?) • ペイロードは小さい方が良い 参考文献:[SR-9232]Optionals with
nil value do not get encoded to JSON #3594
nilをNullでエンコードしたい
nilをNullにエンコードするには
道標 • JSONEncoderがキーを保持して、Nullをセットするように設定 • 自動生成されたものは使えない • encode(to:)の実装を書く必要がある
None
None
None
このままだと不便・・・
None
None
None
None
まとめ • SwiftではAPIにリクエストを投げる際に、Int?やString?型にnilを入れても情報が欠 落する • おそらく、Kotlinも同様? • Nullと欠落を同様に扱うAPIが多いから(?) • ペイロードは小さい方が良い
解決法: • encode(to:)やプロパティラッパーで、nilをNullにエンコードするよう実装する必要が ある
None