Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

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
0
Help us understand the problem. What are the problem?