这是我的JSON:
{
"results": [
{
"user_id": "1",
"item_id": "18630",
"name": "Unnamed Item",
"price": "0",
"description": "",
"created_at": "2014-01-16 15:31:36",
"thumbnail": {
"image50": "http://www.example.com/adsa.jpg",
"image100": "hhttp://www.example.com/adsa.jpg"
},...
我正在进行反序列化吗?
public class ItemListModel {
private String user_id;
private String item_id;
private String name;
private String price;
private String category;
private ArrayList<ThumbnailResponse> thumbnail;
public ItemListModel(){}
// getters
}
public class ThumbnailResponse {
private String image50;
private String image100;
public ThumbnailResponse(){
}
//getters
}
我很困惑,我们何时在JSON文件中使用ArrayList,Array或List作为数组或对象?
还有一件事,如果是这样的话,我还需要将results
作为数组吗?
答案 0 :(得分:3)
正如你所说的那样
"thumbnail": {
"image50": "http://www.example.com/adsa.jpg",
"image100": "hhttp://www.example.com/adsa.jpg"
}
不是JsonArray。因此,您无需将ThumbnailResponse
用作ArrayList
ItemListModel
。
你的模特应该是
public class ItemListModel {
private String user_id;
private String item_id;
private String name;
private String price;
private String category;
private ThumbnailResponse thumbnail; // Not array List
public ItemListModel(){}
// getters
}
并且
还有一件事,如果那样的话,我是否也需要将结果作为数组 案件?
您的主数据容器应包含ItemListModel
的ArrayList。如下所示
ArrayList<ItemListModel> results = new ArrayList<ItemListModel>();
答案 1 :(得分:1)
在你的情况下
// change
private ArrayList<ThumbnailResponse> thumbnail;
// to
private Map<String,String> thumbnail;
如果你想要你声明你的java对象的方式,你需要提供一个变换器(取决于你正在使用的框架)
答案 2 :(得分:1)
List<ItemListModel > ItemListModel ;
try {
Type listType = new TypeToken<List<ItemListModel >>(){}.getType();
result= (List<ItemListModel >) gson.fromJson(result, listType);
} catch (Exception e) {
Log.e("Parsing exeption", e.getLocalizedMessage(), e);
}
this should work