我在尝试使用JsonConverter填充列表视图时遇到此异常
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY,但在第1行第1行为STRING
这是我的JsonConverter类:
public class JsonConverter<T> {
public JsonConverter() {
}
public ArrayList<T> toArrayList(String jsonString, Class<T> clazz) {
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("dd/MM/yy HH:mm:ss");
Gson gson = builder.create();
JsonConverter.ListParameterizedType type = new JsonConverter.ListParameterizedType(clazz);
ArrayList list = (ArrayList)gson.fromJson(jsonString, type);
return list;
}
public List<T> toList(String jsonString, Class<T> clazz) {
ArrayList list = this.toArrayList(jsonString, clazz);
return list;
}
private static class ListParameterizedType implements ParameterizedType {
private Type type;
private ListParameterizedType(Type type) {
this.type = type;
}
public Type[] getActualTypeArguments() {
return new Type[]{this.type};
}
public Type getRawType() {
return ArrayList.class;
}
public Type getOwnerType() {
return null;
}
}
}
这是我的模特课:
public class Product implements Serializable {
@SerializedName("pid")
public int pid;
@SerializedName("name")
public String name;
@SerializedName("qty")
public int qty;
@SerializedName("price")
public String description;
@SerializedName("image_url")
public String image_url;
@SerializedName("date")
public String date;
}
我称之为:
private ArrayList<Product> productList;
@Override
public void processFinish(String s) {
productList = new JsonConverter<Product>().toArrayList(s, Product.class);
.
.
.
不知道我在这里做错了什么
答案 0 :(得分:0)
错误消息告诉您,在将json转换为java对象时,调用期望json中的数组,但却得到了一个字符串。
预期回报:
[
"product" : {
"key" : "value"
}
]
再次检查你的json,它可能是一个字符串而不是一个对象
答案 1 :(得分:0)