【问题标题】:Unexpected Gson object names意外的 Gson 对象名称
【发布时间】:2014-12-13 13:24:03
【问题描述】:

我已经有一些 API,无法更改任何参数和对象名称。

其中一个是它:

{  
   "version":"1.0",
   "error_code":"0",
   "error_message":"OK",
   "session_id":"2f0513adszdab61a4748553c62019a",
   "expire":"2014-12-13 17:38:13",
   "currencyData":{  
      "rate":"1",
      "position":"1",
      "ch":"dollar"
   },
   "data":{  
      "user_id":129733,
      "account_type":0
   },
   "new":{  
      "messages_count":0,
      "purchases_count":0,
      "sales_count":0,
      "offers_count":0,
      "orders_count":0,
      "cart_count":9
   }
}

在这个响应中,我有对象“currencyData”、“data”和“new”。 现在我在反序列化后遇到了这个名字的问题,它们是空的。 我得到这个rec​​ult的代码是:

ApiResponse<UserData> response = new Gson().fromJson(json, UserData.class);

目标对象的名称是:

private CurrencyData currencyData;
private UserData data;
private New newz;

谁能告诉我如何反序列化这些对象?

【问题讨论】:

  • 这些字段在哪里声明?
  • 你确定你的代码可以编译吗?告诉我们ApiResponseUserData
  • @SotiriosDelimanolis 这些字段在 UserData.class 中声明为对象。这个对象已经有任何 String 和 int 值的 getter 和 setter。
  • @SotiriosDelimanolis 代码编译正确,但对象“currencyData”、“data”和“new”为空
  • @SotiriosDelimanolis 我无法正确声明名为“new”的对象,因为它的名称对于 java 不正确。

标签: java android json object gson


【解决方案1】:

试试这个

private CurrencyData currencyData;
private UserData data;
@SerializedName("new")
private New newz;

【讨论】:

  • 你能分享你的模型结构和 ApiResponse 类
  • 它只是用于发送响应侦听器接口的通用类。公共类 ApiResponse { 私有 T 数据; public T getData() { 返回数据; } public void setData(T data) { this.data = data; } }
  • logcat 说 NPE 在对象 New 和值到这个对象中。没有别的
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2016-08-05
  • 1970-01-01
相关资源
最近更新 更多