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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
とんとんぼ
June 04, 2023
Technology
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
More Decks by とんとんぼ
See All by とんとんぼ
Xcode27の新機能
ktombow
0
150
OSSコントリビューションの 楽しみ方と始め方
ktombow
0
62
extension 現場で使えるXcodeショートカット一覧
ktombow
0
390
Ignite の1年間の軌跡
ktombow
0
250
Swift愛好会:What's new in Xcode16 要約
ktombow
0
740
今週のTopics:量子コンピュータ
ktombow
2
220
Flutter開発で便利だと感じた設定
ktombow
0
810
Other Decks in Technology
See All in Technology
AI × Datadog MCP でコスト削減まで実現した Metric Streams の導入
three_mouth_ago
0
110
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
380
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
130
Digital Credentials API × OpenID4VP ブラウザ完結型本人確認の実装知見(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
360
Claude Teamプランの コスト最適化を考える
rfdnxbro
1
820
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
490
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
370
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
1
210
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
360
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
210
AWSとGitHub Actionsの責任境界と 組織で安全に使用する取り組み
nealle
1
230
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
460
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Raft: Consensus for Rubyists
vanstee
141
7.7k
We Have a Design System, Now What?
morganepeng
55
8.3k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
The SEO Collaboration Effect
kristinabergwall1
1
540
Joys of Absence: A Defence of Solitary Play
codingconduct
1
450
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
670
Visualization
eitanlees
152
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
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