json格式的文件内容如下:
[{"code":"ICBC","name":"中国工商银行"},{"code":"ABC","name":"中国农业银行"},{"code":"CCB","name":"中国建设银行"},{"code":"CMB","name":"招商银行"},{"code":"CEB","name":"中国光大银行"},{"code":"CIB","name":"兴业银行"}]
所以应该可以使用GSON进行解析,可以猜测其结构为List<BankInfo>,那么如何解析成这样子的类型呢?
代码如下:
@Override public void onClick(View v) { String content = getFromAssets(assetsBankResourceFileName); Type type = new TypeToken<ArrayList<BankInfo>>() {}.getType(); List<BankInfo> bankInfoList = (List<BankInfo>) GsonUtils.fromJson(content, type); txt.setText(content); } public String getFromAssets(String fileName) { StringBuilder stringBuilder = new StringBuilder(); try { InputStreamReader inputReader = new InputStreamReader(getResources().getAssets().open(fileName)); BufferedReader bufReader = new BufferedReader(inputReader); String line = ""; while ((line = bufReader.readLine()) != null) { stringBuilder.append(line); } return stringBuilder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
package com.robot.tongbanjie.util; import java.lang.reflect.Type; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class GsonUtils { /** * @Title: toJson * @Description: * @param bean * @return String 返回类型 * @throws: */ public static String toJson(Object bean){ Gson gson=new Gson(); return gson.toJson(bean); } public static String toJson(Object bean,Type type){ Gson gson=new Gson(); return gson.toJson(bean, type); } /** * @Title: fromJson * @Description: * @param json * @param type * @return T 返回类型 * @throws: */ public static Object fromJson(String json,Type type){ Gson gson=new Gson(); return gson.fromJson(json, type); } /** * @Title: fromJson * @Description: * @param <T> * @param json * @param classOfT * @return T 返回类型 * @throws: */ public static <T>T fromJson(String json,Class<T> classOfT){ Gson gson=new Gson(); return gson.fromJson(json, classOfT); } }
若解析如下格式内容的文件:
{"1":{"code":"ICBC","name":"中国工商银行"},"2":{"code":"ABC","name":"中国农业银行"},"3":{"code":"CCB","name":"中国建设银行"},"4":{"code":"CMB","name":"招商银行"},"5":{"code":"CEB","name":"中国光大银行"},"6":{"code":"CIB","name":"兴业银行"}}
可以看到这里1、2、3等数字对应的是一个个的对象。
解析的代码如下:
@Override public void onClick(View v) { String content = getFromAssets(assetsBankResourceFileName); Type type = new TypeToken<Map<String, BankInfo>>(){}.getType(); Map<String, BankInfo> bankInfoMap = (Map<String, BankInfo>) GsonUtils.fromJson(content, type); txt.setText(content); } public String getFromAssets(String fileName) { StringBuilder stringBuilder = new StringBuilder(); try { InputStreamReader inputReader = new InputStreamReader(getResources().getAssets().open(fileName)); BufferedReader bufReader = new BufferedReader(inputReader); String line = ""; while ((line = bufReader.readLine()) != null) { stringBuilder.append(line); } return stringBuilder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }