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
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
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
160
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
54k
エージェント化するAI:現在地とその先に起きる変化 / AI as Agents: The Current State and the Changes Ahead
ks91
PRO
0
170
書籍『生成AIの安全性入門』の入門
wataoka
0
140
AIエージェントのためのデータ設計
daiz21
0
550
『自分で判断できるか』を基準に、プロダクトのハンズオン研修でAI利用の線を引いてみた / Where We Drew the Line on AI in Hands-on Training
honyanya
1
480
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
1
210
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
110
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
Digital Credentials API × OpenID4VP ブラウザ完結型本人確認の実装知見(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
360
AIレビュー時代に必要なのは、SLOで引く撤退ライン
nobuoooo
0
150
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
500
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
660
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Done Done
chrislema
186
16k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Paper Plane
katiecoart
PRO
2
53k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
300
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
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