使用JSONObject将json文件转化成对象

来源:互联网 发布:手机购买火车票软件 编辑:程序博客网 时间:2024/06/08 18:48

    使用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)的Listpublic 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!!!

原创粉丝点击