Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
27
extension 現場で使えるXcodeショートカット一覧
ktombow
0
270
Ignite の1年間の軌跡
ktombow
0
180
Swift愛好会:What's new in Xcode16 要約
ktombow
0
630
今週のTopics:量子コンピュータ
ktombow
2
210
Flutter開発で便利だと感じた設定
ktombow
0
780
Other Decks in Technology
See All in Technology
DGX SparkでローカルLLMをLangChainで動かした話
ruzia
1
240
【ASW21-02】STAMP/CAST分析における生成AIの支援 ~羽田空港航空機衝突事故を題材として (Support of Generative AI in STAMP/CAST Analysis - A Case Study Based on the Haneda Airport Aircraft Accident -)
hianraku9498
2
560
How native lazy objects will change Doctrine and Symfony forever
beberlei
1
350
セキュリティAIエージェントの現在と未来 / PSS #2 Takumi Session
flatt_security
3
1.2k
21st ACRi Webinar - AMD Presentation Slide (Nao Sumikawa)
nao_sumikawa
0
130
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9.8k
Databricksによるエージェント構築
taka_aki
1
110
AI駆動開発によるDDDの実践
dip_tech
PRO
0
240
Symfony AI in Action
el_stoffel
2
340
AI開発の定着を推進するために揃えるべき前提
suguruooki
1
470
プラットフォームエンジニアリングとは何であり、なぜプラットフォームエンジニアリングなのか
doublemarket
1
520
Dify on AWS の選択肢
ysekiy
0
120
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Building an army of robots
kneath
306
46k
Bash Introduction
62gerente
615
210k
How to Ace a Technical Interview
jacobian
280
24k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
BBQ
matthewcrist
89
9.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Java REST API Framework Comparison - PWX 2021
mraible
34
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