我有一个问题是理解是否有必要将包含json对象的json数组反序列化为POJO' s。
我的问题不是如何做到这一点,而是为什么?如果有原因,当我需要使用它们时,如何检索和管理这些java对象?
例如,我有一个搜索车辆类型A的用户。服务器返回以下json数组:
[ {
type: "A",
colour: "blue",
top_speed:"100km/h"
},
{
type: "A",
colour: "red",
top_speed:"200km/h"
},
{
type: "A",
colour: "green",
top_speed:"150km/h"
}
]
所以我无法弄清楚 - 是否真的有必要将这些json对象反序列化为java对象,或者是否可以使用json数组,并直接将其作为我的适配器的数据源直接传递?我目前正在做的是以下(现在至少可以正常工作):
JSONArray searchResults;
SearchResultsAdapter itemsAdapter = new SearchResultsAdapter(getActivity(), R.layout.item_search_result, searchResults);
//next is a summary of my adapter:
public class SearchResultsAdapter extends BaseAdapter {
JSONArray items;
Context context;
public SearchResultsAdapter(Context context, int resource, JSONArray objects) {
super();
this.items = objects;
this.context = context;
}
@Override
public JSONObject getItem(int i) {
JSONObject item = null;
try {
item = (JSONObject) items.get(i);
} catch (JSONException e) {
e.printStackTrace();
}
return item;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
LayoutInflater mLayoutInflater = LayoutInflater.from(context);
if (view == null) {
view = mLayoutInflater.inflate(R.layout.item_search_result, viewGroup, false);
}
JSONObject item = (JSONObject) getItem(i);
TextView typeView = (TextView) view.findViewById(R.id.type);
TextView colourView = (TextView) view.findViewById(R.id.colour);
TextView speedView = (TextView) view.findViewById(R.id.speed);
typeView.setText(item.optString("type"));
typeView.setText(item.optString("colour"));
typeView.setText(item.optString("top_speed"));
}
}
这种方法是否可以接受?创造POJO是否比使用这种方法有任何优势,还是我在这里成为一名枪手牛仔编码器?