Json 正在用 moshi 解析

Json parsing with moshi

谁能告诉我为什么这不起作用

型号class:

@JsonClass(generateAdapter = true)
data class InstagramBusinessAccountResponse(
        val data : List<Account>
) {
    data class Account(
            @Json(name = "id") val id : String,
            @Json(name = "instagram_business_account") val instagramBusinessAccount : InstagramBusinessAccount
    ) {
        data class InstagramBusinessAccount(
                @Json(name = "id") val id: String,
                @Json(name = "name") val name: String,
                @Json(name = "profile_picture_url") val profilePictureUrl: String = ""
        )
    }

    companion object {
        fun fromJson(json: String) : InstagramBusinessAccountResponse {
            val moshi = Moshi.Builder().build()
            val jsonAdapter = moshi.adapter(InstagramBusinessAccountResponse::class.java)

            return jsonAdapter.fromJson(json)!!
        }
    }
}

解析以下内容时json

{"data":[{"instagram_business_account":{"id":"id","username":"name","name":"Suyash Chavan","profile_picture_url":"image"},"id":"id"}]}

InstagramBusinessAccountResponse.fromJson(json.toString())

...

companion object {
        fun fromJson(json: String) : InstagramBusinessAccountResponse {
            val moshi = Moshi.Builder().build()
            val jsonAdapter = moshi.adapter(InstagramBusinessAccountResponse::class.java)

            return jsonAdapter.fromJson(json)!!
        }
    }

给 instagramBusinessAccount null 但如果我不使用带有 @Json 的自定义字段名称,即将 instagramBusinessAccount 替换为 instagram_business_account 并将 profilePictureUrl 替换为 profile_picture_url , 它工作正常。

我在 Moshi Builder 中缺少 .add(KotlinJsonAdapterFactory())。

val moshi = Moshi.Builder()
                    .add(KotlinJsonAdapterFactory())
                    .build()

现在有效。