bean
public abstract class BaseBean implements Serializable { @NonNull @Override public String toString() { JSONObject jsonObject = new JSONObject(); try { for (Field field : getClass().getDeclaredFields()) { field.setAccessible(true); // Log.d(getClass().getSimpleName(), "field name:" + field.getName() + " value:" + field.get(this)); jsonObject.put(field.getName(), field.get(this)); } return jsonObject.toString(); } catch (IllegalAccessException | JSONException e) { e.printStackTrace(); } return super.toString(); } } public class CheckListItem extends BaseBean implements Comparable<CheckListItem> { public String name; public String result; public String para; public int type; public CheckListItem() { } public CheckListItem(String name, String result, String para, int type) { this.name = name; this.result = result; this.para = para; this.type = type; } public CheckListItem copy(@NonNull CheckListItem item) { this.name = item.name; this.result = item.result; this.para = item.para; this.type = item.type; return this; } @NonNull @Override public Object clone() { return new CheckListItem(this.name, this.result, this.para, this.type); } public CheckListItem(@NonNull JSONObject json) { name = json.optString(Constant.CHECK_LIST_TAG_NAME); result = json.optString(Constant.CHECK_LIST_TAG_RESULT); para = json.optString(Constant.CHECK_LIST_TAG_PARA); } @Override public int compareTo(CheckListItem item) { return type - item.type; } }
解析工具类
public class JsonParser { public static List<CheckListItem> parserDefault(Context context) { try { File file = new File(Constant.SYSTEM_AUTOTEST_CONF); InputStream inputStream; if (file.exists()) { inputStream = new FileInputStream(file); } else { inputStream = context.getResources().openRawResource(R.raw.default_config); } return parserDefault(inputStream); } catch (IOException | Resources.NotFoundException e) { e.printStackTrace(); } return null; } private static List<CheckListItem> parserDefault(InputStream in) throws IOException { JsonReader reader = new JsonReader(new InputStreamReader(in)); try { return readEntriesArray(reader); } finally { in.close(); reader.close(); } } private static List<CheckListItem> readEntriesArray(JsonReader reader) throws IOException { List<CheckListItem> entries = new CopyOnWriteArrayList<>(); reader.beginArray(); while (reader.hasNext()) { entries.add(readEntries(reader)); } reader.endArray(); return entries; } private static CheckListItem readEntries(JsonReader reader) throws IOException { String taskName = null; String result = null; String para = null; int type = -1; reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); switch (name) { case Constant.CHECK_LIST_TAG_NAME: taskName = reader.nextString(); break; case Constant.CHECK_LIST_TAG_RESULT: result = reader.nextString(); break; case Constant.CHECK_LIST_TAG_PARA: para = reader.nextString(); break; case Constant.CHECK_LIST_TAG_TYPE: type = reader.nextInt(); break; default: reader.skipValue(); break; } } reader.endObject(); return new CheckListItem(taskName, result, para, type); } }