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
180
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
Tweet
Share
More Decks by とんとんぼ
See All by とんとんぼ
Swift愛好会:What's new in Xcode16 要約
ktombow
0
530
今週のTopics:量子コンピュータ
ktombow
2
170
Flutter開発で便利だと感じた設定
ktombow
0
710
Other Decks in Technology
See All in Technology
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
130
AWSマルチアカウント統制環境のすゝめ / 20250115 Mitsutoshi Matsuo
shift_evolve
0
110
GoogleのAIエージェント論 Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
customercloud
PRO
0
150
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
2024年活動報告会(人材育成推進WG・ビジネスサブWG) / 20250114-OIDF-J-EduWG-BizSWG
oidfj
0
230
#TRG24 / David Cuartielles / Post Open Source
tarugoconf
0
580
AWS re:Invent 2024 re:Cap Taipei (for Developer): New Launches that facilitate Developer Workflow and Continuous Innovation
dwchiang
0
160
メンバーがオーナーシップを発揮しやすいチームづくり
ham0215
2
120
機械学習を「社会実装」するということ 2025年版 / Social Implementation of Machine Learning 2025 Version
moepy_stats
5
1k
20250116_JAWS_Osaka
takuyay0ne
2
200
KMP with Crashlytics
sansantech
PRO
0
240
データ基盤におけるIaCの重要性とその運用
mtpooh
4
500
Featured
See All Featured
Navigating Team Friction
lara
183
15k
Writing Fast Ruby
sferik
628
61k
Automating Front-end Workflow
addyosmani
1366
200k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Site-Speed That Sticks
csswizardry
3
270
What's in a price? How to price your products and services
michaelherold
244
12k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
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