【问题标题】:Gson does not map values in JavaGson 不映射 Java 中的值
【发布时间】:2020-10-02 12:09:53
【问题描述】:

我从 API 得到这个结果:

{"sessionID":"","randomKey":"","id":0,"userName":"","useIPAddress":"","usePortNo":"","response":{"code":-24,"message":"Incorrect credential","postedDateTime":null,"accountNo":0,"trxnNo":0,"changeTypeID":0}}

我的课是这样的:

class ResponseLoginParam {
    val RandomKey: String? = null
    val SessionID: String? = null
    val UseIPAddress: String? = null
    val UsePortNo: Int? = null
    val UserName: String? = null
    val Response: Response? = Response()
}

class Response {
    val Code: Int? = null
    val Message: String? = null
    val PostedDateTime: String? = null
    val AccountNo: Int? = null
    val ChangeTypeID: Int? = null
}

由于某种原因,它没有映射到我的对象。但如果我得到这样的结果:

{"SessionID":"","RandomKey":"","Id":0,"UserName":"","UseIPAddress":"","UsePortNo":"","Response":{"Code":-24,"Message":"Incorrect credential","PostedDateTime":null,"AccountNo":0,"TrxnNo":0,"ChangeTypeID":0}}

现在大写了,我可以正确映射值。这是为什么呢?

【问题讨论】:

  • 使用 GsonBuilder 创建 Gson 对象时,将 FieldNaming 策略设置为 gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
  • 您能否添加您的特定代码以获取 API 响应并使用 Gson 映射到您的类?
  • 嗨 Ibanez1408。我编辑了你的一些问题,以提高它们的简洁性和可读性。他们往往表现出一种恳求、谄媚的语气,读者可能会觉得这种语气是强制性的——请记住他们是志愿者。我可以要求你坚持技术写作吗?你写作不仅仅是为了解决你眼前的问题,而是为了帮助为许多未来的读者创建一个问答。

标签: java kotlin gson


【解决方案1】:

您需要对class和json字段进行同等命名,或者定义序列化名称:

  class Response {
    @SerializedName("code") // since its "code" in json
    val Code: Int? = null
    //no need for annotation because class field name equals json field name
    val message: String? = null
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多