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
210
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
Tweet
Share
More Decks by とんとんぼ
See All by とんとんぼ
Ignite の1年間の軌跡
ktombow
0
120
Swift愛好会:What's new in Xcode16 要約
ktombow
0
580
今週のTopics:量子コンピュータ
ktombow
2
200
Flutter開発で便利だと感じた設定
ktombow
0
750
Other Decks in Technology
See All in Technology
Roo Codeにすべてを委ねるためのルール運用
pharma_x_tech
1
210
Contract One Dev Group 紹介資料
sansan33
PRO
0
6k
CSS polyfill とその未来
ken7253
0
140
プロジェクトマネジメント実践論|現役エンジニアが語る!~チームでモノづくりをする時のコツとは?~
mixi_engineers
PRO
3
170
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
660
mnt_data_とは?ChatGPTコード実行環境を深堀りしてみた
icck
0
190
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
38k
TypeScript と歩む OpenAPI の discriminator / OpenAPI discriminator with TypeScript
kaminashi
1
150
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
1
280
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
NW運用の工夫と発明
recuraki
1
480
Slackひと声でブログ校正!Claudeレビュー自動化編
yusukeshimizu
3
150
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Statistics for Hackers
jakevdp
799
220k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
42
2.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Documentation Writing (for coders)
carmenintech
71
4.8k
Six Lessons from altMBA
skipperchong
28
3.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
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