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
220
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
Tweet
Share
More Decks by とんとんぼ
See All by とんとんぼ
OSSコントリビューションの 楽しみ方と始め方
ktombow
0
30
extension 現場で使えるXcodeショートカット一覧
ktombow
0
280
Ignite の1年間の軌跡
ktombow
0
200
Swift愛好会:What's new in Xcode16 要約
ktombow
0
650
今週のTopics:量子コンピュータ
ktombow
2
210
Flutter開発で便利だと感じた設定
ktombow
0
780
Other Decks in Technology
See All in Technology
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
210
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
150
I tried making a solo advent calendar!
zzzzico
0
140
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
230
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
350
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
2
720
Cloud WAN MCP Serverから考える新しいネットワーク運用 / 20251228 Masaki Okuda
shift_evolve
PRO
0
140
BidiAgent と Nova 2 Sonic から考える音声 AI について
yama3133
2
150
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
19k
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
ファインディにおけるフロントエンド技術選定の歴史
puku0x
0
140
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
47
Deep Space Network (abreviated)
tonyrice
0
33
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
Design in an AI World
tapps
0
110
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Rails Girls Zürich Keynote
gr2m
95
14k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
81
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
140
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
40
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
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