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
230
0
Share
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
More Decks by とんとんぼ
See All by とんとんぼ
OSSコントリビューションの 楽しみ方と始め方
ktombow
0
45
extension 現場で使えるXcodeショートカット一覧
ktombow
0
350
Ignite の1年間の軌跡
ktombow
0
230
Swift愛好会:What's new in Xcode16 要約
ktombow
0
700
今週のTopics:量子コンピュータ
ktombow
2
220
Flutter開発で便利だと感じた設定
ktombow
0
800
Other Decks in Technology
See All in Technology
freeeで運用しているAIQAについて
qatonchan
1
630
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.5k
2026-05-14 要件定義からソース管理まで!IBM Bob基礎ハンズオン
yutanonaka
0
160
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.5k
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
1
250
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
400
おいらのAWSアップデートの追い方〜Slack×AgentCore〜
yakumo
1
110
エムスリーテクノロジーズ株式会社 エンジニア向け紹介資料 / M3 Technologies Company Deck
m3_engineering
0
170
既存プロダクトQAから新規プロダクトQAへ
ryotakahashi
0
140
Databricks 月刊サービスアップデートまとめ 2026年04月号
tyosi1212
0
130
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
780
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.6k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
35k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
740
Information Architects: The Missing Link in Design Systems
soysaucechin
0
920
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
350
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
230
Practical Orchestrator
shlominoach
191
11k
Paper Plane
katiecoart
PRO
1
50k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
150
Deep Space Network (abreviated)
tonyrice
0
140
First, design no harm
axbom
PRO
2
1.2k
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