Edited at

Gson().fromJson(str, 局所クラス) すると null が返ってきた

ちょっとハマったのでメモ

(kotlin でやっていたのでコードサンプルも kotlin で書きますが、 Java でも同じはず。です。gson のバージョンは 2.8.4)

とある API から取ってきた json を Gson でハンドリングしようとして、モックのつもりで下記のように書いた。

fun の中で JsonFormat を定義して Gson().fromJson に渡す

class Sample {

fun parseJson(jsonString: String) {
data class SampleJsonFormat(
val sample_key: String
)

val obj = Gson().fromJson(jsonString, SampleJsonFormat::class.java)
if (obj == null) {
System.out.print("obj is null.")
}
}
}

と、たとえば、 {"sample_key":"sample value"} を渡しても、

Sample().parseJson("""{"sample_key":"sample value"}""")

この場合 obj is null. が出力される。 SampleJsonFormat が見つからなかったからといって例外とかは出ない。

解決法の一個としては、desirialize するクラス(この例でいうと data class SampleJsonFormat)を class Sample の外に定義してあげると、きちんとデータが作れる。