После запуска следующей строки кода, пытающейся передать строку JSON:
var test = String(tempstore, Charset.forName("US-ASCII"))
var gson = Gson()
var testmodel = gson.fromJson(test, AuthoriseReq::class.java)
Строка JSON выглядит следующим образом:
{
"transaction": {
"id": "5f9a1239-0bdc-4ad6-84e0-f685cfa836f9",
"timestamp": "2019-07-04T08:42:37.9830577+02:00"
},
"user": {
"username": "trt",
"passwordHash": "juju"
},
"terminal": {
"terminalId": "juju",
"site": {
"id": "juju"
}
}
}
Класс данных выглядит следующим образом, также следует отметить, что я включил пустые конструкторы в мои классы данных:
data class AuthoriseReq(
@SerializedName("transaction") val transaction: Transaction,
@SerializedName("user") val user: User,
@SerializedName("terminal") val terminal: Terminal)
{
constructor() : this(Transaction(), User(), Terminal())
}
data class Terminal(
@SerializedName("terminalId") var terminalId: String,
@SerializedName("site") var site: Site)
{
constructor() : this("", Site())
}
data class Transaction(
@SerializedName("id") var id: String,
@SerializedName("timestamp") var timestamp:DateTime)
{
constructor(): this("", DateTime())
}
data class Site(
@SerializedName("id") var id: String)
{
constructor():this("")
}
data class User(
@SerializedName("username") var username: String ,
@SerializedName("passwordHash") var passwordHash : String )
{
constructor(): this("","")
}
Тем не менее, я продолжаю получать следующую ошибку при попытке синтаксического анализа JSON:
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 74 path $.transaction.timestamp