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
200
JSONEncodeで詰まった話
JSONEncoderでnilをNullとしてエンコードした際に詰まった話と解決方法について解説しています。
とんとんぼ
June 04, 2023
Tweet
Share
More Decks by とんとんぼ
See All by とんとんぼ
Ignite の1年間の軌跡
ktombow
0
110
Swift愛好会:What's new in Xcode16 要約
ktombow
0
570
今週のTopics:量子コンピュータ
ktombow
2
200
Flutter開発で便利だと感じた設定
ktombow
0
740
Other Decks in Technology
See All in Technology
Previewでもここまで追える! Azure AI Foundryで始めるLLMトレース
tomodo_ysys
2
550
製造業向けIoTソリューション提案資料.pdf
haruki_uiru
0
220
Part1 GitHubってなんだろう?その2
tomokusaba
2
650
勝手に!深堀り!Cloud Run worker pools / Deep dive Cloud Run worker pools
iselegant
4
660
C++26アップデート 2025-03
faithandbrave
0
1.2k
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
380
10分で学ぶ、RAGの仕組みと実践
supermarimobros
0
890
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
coconala_engineer
0
210
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
2
570
Oracle Cloud Infrastructure:2025年4月度サービス・アップデート
oracle4engineer
PRO
0
410
グループ ポリシー再確認 (2)
murachiakira
0
230
ペアーズにおける評価ドリブンな AI Agent 開発のご紹介
fukubaka0825
9
2.4k
Featured
See All Featured
Music & Morning Musume
bryan
47
6.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
4 Signs Your Business is Dying
shpigford
183
22k
GitHub's CSS Performance
jonrohan
1031
460k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Designing for humans not robots
tammielis
253
25k
Fireside Chat
paigeccino
37
3.4k
A better future with KSS
kneath
239
17k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
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
Otomatik - 104.22.39.239
CloudFlare DNS
Türk Telekom DNS
Google DNS
Open DNS
OSZAR »