使用JSONObject将json文件转化为对象,最主要的步骤就是:
1.将json文件转化为字符串,这里用到了文件流的读取
2.引入json-lib包,调用里面的方法。
比较简单,只当做一个记录
1.贴出test1.js文件
{ "province":[{"cityId":18,"cityName":"西安"},{"cityId":53,"cityName":"广州"}] }
2.贴出实体类文件
public class Province { private String cityId; private String cityName; public String getCityId() { return cityId; } public void setCityId(String cityId) { this.cityId = cityId; } public String getCityName() { return cityName; } public void setCityName(String cityName) { this.cityName = cityName; } @Override public String toString() { return "Province{" + "cityId='" + cityId + '\'' + ", cityName='" + cityName + '\'' + '}'; } }
下面是主要的方法
public class Main { public static void main(String[] args)throws Exception { String s = fileRead(); JSONObject jsonObject = new JSONObject().fromObject(s); List<Map<String, Object>> provinceList = JsonParseUtils.toList(jsonObject.get("province")); ArrayList<Province> provinces = new ArrayList<>(); for (Map<String, Object> stringObjectMap : provinceList) { Province province = new Province(); province.setCityId(stringObjectMap.get("cityId").toString()); province.setCityName(stringObjectMap.get("cityName").toString()); provinces.add(province); } for (Province province : provinces) { System.out.println(province); } } public static String fileRead() throws Exception { File file = new File("test.json");//定义一个file对象,用来初始化FileReader FileReader reader = new FileReader(file);//定义一个fileReader对象,用来初始化BufferedReader BufferedReader bReader = new BufferedReader(reader);//new一个BufferedReader对象,将文件内容读取到缓存 StringBuilder sb = new StringBuilder();//定义一个字符串缓存,将字符串存放缓存中 String s = ""; while ((s =bReader.readLine()) != null) {//逐行读取文件内容,不读取换行符和末尾的空格 sb.append(s + "\n");//将读取的字符串添加换行符后累加存放在缓存中 System.out.println(s); } bReader.close(); String str = sb.toString(); System.out.println(str ); return str; }使用JsonParseUtils调用的方法为:
/*** * 将对象转换为List> * @param object * @return */ // 返回非实体类型(Map)的List public static List<Map<String, Object>> toList(Object object) { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); JSONArray jsonArray = JSONArray.fromObject(object); for (Object obj : jsonArray) { JSONObject jsonObject = (JSONObject) obj; Map<String, Object> map = new HashMap<String, Object>(); Iterator it = jsonObject.keys(); while (it.hasNext()) { String key = (String) it.next(); Object value = jsonObject.get(key); map.put((String) key, value); } list.add(map); } return list; }
这里我就不做过多的说明了,总之思路就是:new一个JsonObject对象,将读取的文件流String转化为jJSONObject,然后new一个JSONArray对象,将object转化为数组对象,将数组以键值对的方式放在map中,然后将map设置到对象中。
so easy!!!