预期 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ 处 BEGIN_OBJECT
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
我收到来自 Flickr api 的 Json 回复,类似于:
{
"photos": {
"page": 1,
"pages": 1,
"perpage": 100,
"total": 2,
"photo": [
{
"id": "14774811932",
"owner": "32738276@N08",
"secret": "cbb99f0039",
"server": "3853",
"farm": 4,
"title": "Weltschmerz",
"ispublic": 1,
"isfriend": 0,
"isfamily": 0,
"date_faved": "1432471819"
},
{
"id": "13274800365",
"owner": "114920113@N07",
"secret": "b652859e6a",
"server": "3688",
"farm": 4,
"title": "cactus desert",
"ispublic": 1,
"isfriend": 0,
"isfamily": 0,
"date_faved": "1432466782"
}
]
},
"stat": "ok"
}
我需要在 ArrayList 中获取两个 Photo
对象。
我的代码是:
Helper helper = new Helper(this);
String jsonString = helper.loadJSONFromAsset();
Gson gson = new Gson();
Photos photos = gson.fromJson(jsonString,
new TypeToken<Photos>() { }.getType());
// ArrayList<Photo> photos = gson.fromJson(jsonString,
// new TypeToken<ArrayList<Photo>>(){}.getType());
目前我从资产加载文件。当它起作用时,我会将其更改为 flickr api
照片 class :
public class Photos {
Integer page;
Integer pages;
Integer perpage;
Integer total;
ArrayList<Photo> photos;
String stat;
//getters and setters here
我的理解是,我必须先提取 photos
项目,然后从该项目提取数组 photo
这样我才能得到我需要的 ArrayList。
我认为您必须像这样创建 Gson TypeToken:
public class Photos {
Integer page;
Integer pages;
Integer perpage;
Integer total;
ArrayList<Photo> photo;
String stat;
//setters and getters
}
通过这种方式,您可以复制 Flickr JSON,Gson 将 Json 正确映射为:
Photos photos = gson.fromJson(jsonString,
new TypeToken<Photos>(){}.getType());
然后你可以得到你的照片 ArrayList:
photos.getPhoto();
我收到来自 Flickr api 的 Json 回复,类似于:
{
"photos": {
"page": 1,
"pages": 1,
"perpage": 100,
"total": 2,
"photo": [
{
"id": "14774811932",
"owner": "32738276@N08",
"secret": "cbb99f0039",
"server": "3853",
"farm": 4,
"title": "Weltschmerz",
"ispublic": 1,
"isfriend": 0,
"isfamily": 0,
"date_faved": "1432471819"
},
{
"id": "13274800365",
"owner": "114920113@N07",
"secret": "b652859e6a",
"server": "3688",
"farm": 4,
"title": "cactus desert",
"ispublic": 1,
"isfriend": 0,
"isfamily": 0,
"date_faved": "1432466782"
}
]
},
"stat": "ok"
}
我需要在 ArrayList 中获取两个 Photo
对象。
我的代码是:
Helper helper = new Helper(this);
String jsonString = helper.loadJSONFromAsset();
Gson gson = new Gson();
Photos photos = gson.fromJson(jsonString,
new TypeToken<Photos>() { }.getType());
// ArrayList<Photo> photos = gson.fromJson(jsonString,
// new TypeToken<ArrayList<Photo>>(){}.getType());
目前我从资产加载文件。当它起作用时,我会将其更改为 flickr api
照片 class :
public class Photos {
Integer page;
Integer pages;
Integer perpage;
Integer total;
ArrayList<Photo> photos;
String stat;
//getters and setters here
我的理解是,我必须先提取 photos
项目,然后从该项目提取数组 photo
这样我才能得到我需要的 ArrayList。
我认为您必须像这样创建 Gson TypeToken:
public class Photos {
Integer page;
Integer pages;
Integer perpage;
Integer total;
ArrayList<Photo> photo;
String stat;
//setters and getters
}
通过这种方式,您可以复制 Flickr JSON,Gson 将 Json 正确映射为:
Photos photos = gson.fromJson(jsonString,
new TypeToken<Photos>(){}.getType());
然后你可以得到你的照片 ArrayList:
photos.getPhoto();