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

本文介绍了如何使用JSONObject将json文件转换为Java对象,主要包括两个步骤:读取json文件内容为字符串,然后利用json-lib库将字符串解析成对象。通过创建JSONObject和JSONArray,将数据映射到实体类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    使用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!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值