正在用数据 类 解析 JSON 字符串
Parsing JSON String with data classes
在 运行 之后,以下代码行试图传递 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"
}
}
}
数据class如下,还要注意的是我在数据中包含了空构造函数classes:
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
替换以下内容
@SerializedName("timestamp") var timestamp:DateTime)
与
@SerializedName("timestamp") var timestamp : String )
这应该可以解决错误,因为 "2019-07-04T08:42:37.9830577+02:00"
是提供的 JSON 字符串中的一个字符串。
在 运行 之后,以下代码行试图传递 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"
}
}
}
数据class如下,还要注意的是我在数据中包含了空构造函数classes:
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
替换以下内容
@SerializedName("timestamp") var timestamp:DateTime)
与
@SerializedName("timestamp") var timestamp : String )
这应该可以解决错误,因为 "2019-07-04T08:42:37.9830577+02:00"
是提供的 JSON 字符串中的一个字符串。