Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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

negito6
今はこの会社で、水産養殖 IoT の仕事してます。 https://umitron.com/ja/ 編集リクエスト、コメント大歓迎です。よろしくお願いします
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away