我的问题是,我不能通过使用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[]
我该如何解决这个问题?请帮助,非常感谢。
答案 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()]);