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
36
extension 現場で使えるXcodeショートカット一覧
ktombow
0
300
Ignite の1年間の軌跡
ktombow
0
210
Swift愛好会:What's new in Xcode16 要約
ktombow
0
660
今週のTopics:量子コンピュータ
ktombow
2
210
Flutter開発で便利だと感じた設定
ktombow
0
780
Other Decks in Technology
See All in Technology
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
190
衛星画像即時マッピングサービスの実現に向けて
lehupa
1
240
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
230
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
130
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
430
横断SREがSRE社内留学制度 / Enablingになぜ踏み切ったのか
rvirus0817
0
220
OpenShiftでllm-dを動かそう!
jpishikawa
0
210
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
250
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
1k
AWS Network Firewall Proxyを触ってみた
nagisa53
1
260
プロポーザルに込める段取り八分
shoheimitani
1
780
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
270
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
4.4k
Bash Introduction
62gerente
615
210k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Building Applications with DynamoDB
mza
96
6.9k
Tell your own story through comics
letsgokoyo
1
820
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
53k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Technical Leadership for Architectural Decision Making
baasie
2
260
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
110
The agentic SEO stack - context over prompts
schlessera
0
650
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
120
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