0
我得到JSON的數據是這樣的:解析一個非頂級JSON數組與GSON TypeToken
{
"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;
}
我想打開Json-數據轉換爲使用Gson的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中列表中的最後一個逗號。你目前有'},]',它可能無法解析。 – Tro
這是從我複製JSON和刪除一些元素,使它更容易閱讀錯誤。實際傳遞的JSON不包含它。 – tsorn
你最後的嘗試應該可以正常工作。這是你解析的唯一JSON嗎?錯誤是否可能來自不同的嘗試? – iagreen