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
JJUG CCC 懇親会LT用資料
Search
pawn-4-git
May 18, 2019
Programming
0
120
JJUG CCC 懇親会LT用資料
pawn-4-git
May 18, 2019
Tweet
Share
More Decks by pawn-4-git
See All by pawn-4-git
JJUG CCC 2018 fall LT
pawn4sd
0
87
Other Decks in Programming
See All in Programming
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
480
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
800
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
150
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
260
今から始めるClaude Code超入門
448jp
8
9.1k
Gemini for developers
meteatamel
0
100
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
140
Featured
See All Featured
Leo the Paperboy
mayatellez
4
1.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Automating Front-end Workflow
addyosmani
1371
200k
Ethics towards AI in product and experience design
skipperchong
2
200
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
New Earth Scene 8
popppiees
1
1.5k
Context Engineering - Making Every Token Count
addyosmani
9
670
Transcript
JSON Map ⇒ 変換の罠 2019.5.18 JJUG CCC LT 蓬莱寿成
自己紹介 • 名前 蓬莱寿成 • 都内の企業で SE をして 8 年目 •
普段は Java を使った Web アプリケーション開発 • Twitter @pawn_4_t • 個人のブログ https://whiletruedotcom.wordpress.com/
自己紹介
自己紹介
自己紹介
本日の内容 • JSON から Map への変換 バージョン Java8 JSONIC のライブラリを使用
問)下のコードの実行結果はどうなるでしょう
問)下のコードの実行結果はどうなるでしょう ClassCastException
問)下のコードの実行結果はどうなるでしょう ClassCastException ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
問)下のコードの実行結果はどうなるでしょう ClassCastException ClassCastException: • java.math.BigDecimal cannot be cast to java.lang.String
(・・・ BigDecimal ?どこにも使ってないのに?)
解析 • クラスファイルのデコンパイルをしてみる
解析 • クラスファイルのデコンパイルをしてみる ???
解析 • クラスファイルのデコンパイルをしてみる 型の定義がなくなる!!
解析 • クラスファイルのデコンパイルをしてみる Key も Value も型は固定ではない!
解析 • クラスファイルのデコンパイルをしてみる 変換前の文字列の 1234 が”で囲まれてないので数値扱い ⇒Value の型が BigDecimal になる
解析 • クラスファイルのデコンパイルをしてみる BigDecimal の変数を String に変換しようとする ⇒ 例外発生
テストで見つからなかった原因は? API
参考までに • Map<String,Integer> のデコンパイルをしてみる
まとめ • Map の型の定義はコンパイル後は宣言の部分から消える (その後の変数が使用される場所に反映される) • JSON 使いやすいが変換ミスが原因のわかりにくいバグ を生む(そもそも専用の POJO
に変えるべき) • ソース見てもわからなかったらデコンパイルかけてみる