我与toJson
使用的类
class LoadUserDTO: Serializable {
@SerializedName("userGuid")
var userGuid: String? = null
@SerializedName("userToken")
var userToken: String? = null
constructor(userGuid: String, userToken: String) {
this.userGuid = userGuid
this.userToken = userToken
}
}
其余的使用:
val payload = LoadUserDTO(userGuid = user.guid!!, userToken = user.token!!)
val jsonPayload = Gson().toJson(payload)
this.socketService.socket.emit(EndpointsEnum.AppLoadUser, jsonPayload)
jsonPayload应该是JSON Object。相反,整个东西是一个字符串,应该是JSON对象:
"{"userGuid":"...","userToken":"..."}"
当它被服务器接收时,它不是像Web UI或Swift App发送的那样接收JSON对象,而是一个字符串,没有转换成JSON对象。
try this,
var jsonString = """{"id":1,"description":"Test"}""";
var testModel = gson.fromJson(jsonString, TestModel::class.java)
根据您的需求而不是使用Gson
,您可以使用String.format
通过一行代码来实现这一点-
// val payload = LoadUserDTO(userGuid = user.guid!!, userToken = user.token!!)
// val jsonPayload = Gson().toJson(payload)
val jsonPayload = String.format(""{"userGuid": "%s"," + ""userToken": "%s"" + "}"",user.guid,user.token)
// Log.d("ZI",jsonPayload)
输出——示例
"{"userGuid": "1234","userToken": "token000"}"
在格式化字符串时,可以在:
之后删除space
。
val jsonPayload = String.format(""{"userGuid":"%s"," + ""userToken":"%s"" + "}"",user.guid,user.token)
输出——
"{"userGuid":"1234","userToken":"token000"}"
我还不完全明白为什么,但是这个问题给了我答案,让它工作:
从套接字发送JSON数据。IO from android
val jsonPayload = Gson().toJson(payload)
val jsonObj = JSONObject(jsonPayload)
this.socketService.socket.emit(EndpointsEnum.AppLoadUser, jsonObj)
在创建jsonObj
之后,服务器现在有一个可以使用的正确形成的JSON对象。