使用Gson.fromJson()方法解析json到类< T>模型不起作用

时间:2014-07-18 06:36:12

标签: java android json types gson

我的问题是,我不能通过使用Gson.fromJson()方法解析json到类< T>模型。

在我的 PageOutput.java

public class PageOutput<T> {

      @SerializedName("TotalItemCount")
      public int totalItemCount;

      @SerializedName("Items")
      private T[] items;

      public final T[] getItems() {
          return items;
      }
}

Property.java

public class Property {
   @SerializedName("Id")
   public String id;

   @SerializedName("Title")
   public String title;

   @SerializedName("Price")
   public BigDecimal price;
    ....
}

Main.java 中,

PageOutput<Property>  output = new Gson.fromJson(jsonString, new TypeToken<PageOutput<Property>>(){}.getType());

编译项目时,我在Items中得到null。

但是当我使用

PageOutput<Property>  output = new Gson.fromJson(jsonString, PageOutput.class);

我会在T []项目的通用对象类型中得到结果,同时我应该得到 Property 类型。 (第18行)

output = {com.myapp.PageOutput@830048974608}
items = {java.lang.Object[17]@830048616120} //Line 18
[0] = {com.google.gson.internal.LinkedTreeMap@830048777632} size = 16
[1] = {com.google.gson.internal.LinkedTreeMap$Node@830047149712}"Id" -> "2936918.0"
[2] = {com.google.gson.internal.LinkedTreeMap$Node@830047452528}"Title" -> "Valdor, Penang"
[3] = {com.google.gson.internal.LinkedTreeMap$Node@830047985896}"Price" -> "7.5698E9"

当我投射这个物体时,

Property[] properties = output.getItems(); //Return error

我会收到错误:

java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.myapp.model.Property[]

我该如何解决这个问题?请帮助,非常感谢。

2 个答案:

答案 0 :(得分:4)

这是解析它的正确方法

PageOutput<Property>  output = new Gson.fromJson(jsonString, new TypeToken<PageOutput<Property>>(){}.getType());

并且在项目处获取null意味着您需要检查您的json字符串及其构建方式

答案 1 :(得分:0)

试试这个 -

items= output.getItems();

Property[] properties = itmes.toArray(new Property[items.size()]);