【发布时间】:2015-09-07 14:01:44
【问题描述】:
我得到这样的 Json 数据:
{
"crowds": [
{
"_id": "55ed5f87cdc20e5b2d7ba546",
"name": "The 1 crowd"
},
{
"_id": "55ed6d1a6cc793110057587d",
"name": "testCrowd"
},
{
"_id": "55ed74e2d960a18c3adb3cd7",
"name": "The crowd"
}
]
}
对应Crowd类:
public class Crowd {
private String _id;
private String name;
}
我想使用 Gson 将 Json 数据转换为 Crowd 对象列表。下面的方法来源于官方的Gson例子:
private static Type listCrowdType = new TypeToken<List<Crowd>>(){}.getType();
public void handleJsonResponse(String jsonString) {
JsonParser jsonParser = new JsonParser();
JsonArray array = jsonParser.parse(jsonString).getAsJsonArray();
List<Crowd> crowds = gson.fromJson(array.get(0), listCrowdType);
}
在这种情况下,Gson 告诉我This is not a JSON Array.
我什至无法计算我尝试转换 jsonString 并将其传递给 Gson 的所有不同方式,但它永远不会快乐,给了我不同的错误,如 Expected BEGIN_OBJECT but was BEGIN_STRING 等。
怎么办?
我尝试过的其他东西:
public void handleJsonResponse(String jsonString) {
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(jsonString);
JsonObject jsonObject = jsonElement.getAsJsonObject();
List<Crowd> crowds = gson.fromJson(jsonObject.get("crowds"), listCrowdType);
}
错误:Expected BEGIN_OBJECT but was STRING
【问题讨论】:
-
尝试删除 JSON 列表中的最后一个逗号。您当前有
}, ],它可能无法解析。 -
这是我复制 JSON 并删除一些元素以使其更易于阅读的错误。实际传递的 JSON 不包含它。
-
您的最后一次尝试应该可以正常工作。这是您正在解析的唯一 JSON 吗?错误是否可能来自不同的尝试?