LoginSignup
3
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-10-31

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

(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 の外に定義してあげると、きちんとデータが作れる。

3
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0