1. negito6

    Posted

    negito6
Changes in title
+Gson().fromJson(str, 内部クラス) すると null が返ってきた
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,34 @@
+ちょっとハマったのでメモ
+
+kotlin でやっていたのでコードサンプルも kotlin で書きますが、 Java でも同じはず。です。
+
+gson のバージョンは 2.8.4
+
+とある API から取ってきた json をハンドリングしようとして、モックのつもりで書きのように書いた。
+
+`fun` の中で `JsonFormat` を定義して `Gson().fromJson` に渡す
+
+```kotlin
+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"}` を渡しても、
+
+```kotlin
+Sample().parseJson("""{"sample_key":"sample value"}""")
+```
+
+この場合 `obj is null.` が出力される。 `SampleJsonFormat` が見つからなかったからといって例外とかは出ない。
+
+解決法の一個としては、desirialize するクラス(この例でいうと `data class SampleJsonFormat`)を `class Sample` の外に定義してあげると、きちんとデータが作れる。