在Android中真正需要将json反序列化为POJO吗?

时间:2014-03-24 16:11:52

标签: android json serialization deserialization pojo

我有一个问题是理解是否有必要将包含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是否比使用这种方法有任何优势,还是我在这里成为一名枪手牛仔编码器?

0 个答案:

没有答案