package com.elphin.framework.util.jsonparser; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * 解析逻辑的基础类 * @author elphin * @param <T> */ public abstract class BaseParser<T extends BaseObject> implements Parser<T> { public abstract T parse(JSONObject json) throws JSONException; public static final JSONObject createJSONParser(InputStream inputStream, String encodeing) throws JSONException, IOException, Exception { BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, encodeing)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = in.readLine()) != null) { buffer.append(line); } // LogUtils.debug(buffer.toString()); JSONObject jsonObject = new JSONObject(buffer.toString()); return jsonObject; } /* * inner builder util * @param json * @param builder * @return * @throws JSONException * @author sunpengshuai */ public final static <V extends BaseObject> List<V> parser(String json, Parser<V> builder,boolean islinked) throws JSONException { JSONArray jsonArray = new JSONArray(json); int n = jsonArray.length(); List<V> lists ; if(islinked){ lists= new LinkedList<V>(); }else{ lists= new ArrayList<V>(n); } for (int i = 0; i < n; i++) { lists.add(builder.parse(jsonArray.getJSONObject(i))); } return lists; } }