Я установил Firebase для простой структуры: {"id": {"fieldname": field}}
Я получаю данные из Firebase в форме JsonObject.
Каждый раз, когда я получаю данные, идентификатор отличается, обычно что-то вроде: "-M234567890-breubube8".
Если я использую Gson конвертер с модификацией, данные возвращаются хорошо, но если я пытаюсь конвертировать Moshi, JsonObject не может выполнить синтаксический анализ.
Есть ли способ обойти эту проблему?
// MOSHI-way
/* MOSHI retrofit builder*/
[...excluded...].addConverterFactory(MoshiConverterFactory.create()).build()
/* MOSHI retrofit api services */
@GET(FIREBASE_RETROFIT_ENDPOINT)
fun getAnAccount(
@Query(QUERY_CLAUSE_ORDERBY) orderBy : String
, @Query(QUERY_CLAUSE_STARTAT) startAt : String
, @Query(QUERY_CLAUSE_ENDAT) endAt : String
): Call<ResponseWrapper>
/* MOSHI response routine */
override fun onResponse(call: Call<ResponseWrapper>, response: Response<ResponseWrapper>) {
println(response)
}
/* MOSHI definition */
@JsonClass(generateAdapter = true)
data class ResponseWrapper(
@field: Json(name="") var mKey: JsonObject? = null //this will fail <---
)
/* MOSHI definition */
@JsonClass(generateAdapter = true)
data class AccountWrapper(
@field: Json(name = FIREBASE_ACCOUNT_FIELDNAME_TAG) var fieldname: String = ""
)
// GSON-way
/* GSON retrofit builder */
[...excluded...].addConverterFactory(GsonConverterFactory.create()).build()
/* GSON retrofit api services */
@GET(FIREBASE_RETROFIT_ENDPOINT)
fun getAnAccount(
@Query(QUERY_CLAUSE_ORDERBY) orderBy : String
, @Query(QUERY_CLAUSE_STARTAT) startAt : String
, @Query(QUERY_CLAUSE_ENDAT) endAt : String
): Call<JsonObject>
/* GSON response routine */
override fun onResponse(call: Call<JsonObject>, response: Response<JsonObject>) {
println(response)
}
/* GSON definition */
data class ResponseWrapper(
var mKey: JsonObject? = null
)
/* GSON definition */
@JsonClass(generateAdapter = true)
data class AccountWrapper(
@field: Json(name = FIREBASE_ACCOUNT_FIELDNAME_TAG) var fieldname: String = ""
)