【Java】读取Json配置文件

获取全部Json文件内容返回:

public JSONObject getRoleJson(String fileName) {
    String path = getClass().getClassLoader().getResource(fileName).toString();
    path = path.replace("\\", "/");

    if (path.contains(":")) {
        // path = path.substring(6);// 1
        path = path.replace("file:", "");// 2
    }
    JSONObject jsonObject = null;
    String input;
    try {
        input = FileUtils.readFileToString(new File(path), "UTF-8");
        jsonObject = JSONObject.parseObject(input);
        return jsonObject;
    } catch (IOException e) {
        log.error("json解析失败", e);
    }
    return jsonObject;
}

获取Json文件中单个字段内容:

//将 test.json 的数据转换成 JSON 对象
//需要创建一个解析器,可以用来解析字符串或输入流
JsonParser parser = new JsonParser();
try {
    //创建一个JSON对象,接收parser解析后的返回值
    //使用parse()方法,传入一个Reader对象,返回值是JsonElement类型
    //因为要读取文件,所以传入一个FileReader
    //JsonObject是JsonElement的子类,所以需要强转
    //有异常抛出,使用 try catch 捕获
    JsonObject object = (JsonObject) parser.parse(new FileReader("src\\main\\resources\\vehicleParameter.json"));
    JsonArray jsonArray = object.get("vehicleParameter").getAsJsonArray();
    System.out.println(jsonArray);


    //先将两个外部的属性输出 category 和 pop
    //先 get 到名称(键),返回的是 JsonElement,再 getAs 转换成什么类型的值
    //依据 json 格式里的数据类型
    /*System.out.println("category=" + object.get("category").getAsString());
    System.out.println("pop=" + object.get("pop").getAsBoolean());
    //接着读取test.json里的JSON数组,名称是languages(键)
    //创建一个JsonArray
    JsonArray array = object.get("languages").getAsJsonArray();
    for (int i = 0; i < array.size(); i++) {
        //分隔线
        System.out.println("-----------------");
        //创建一个JsonObject,从array的下标获取,get() 返回JsonElement类型
        //这里不用强转,而用 getAsJsonObject() 进行转换
        JsonObject subObject = array.get(i).getAsJsonObject();
        System.out.println("id=" + subObject.get("id").getAsInt());
        System.out.println("name=" + subObject.get("name").getAsString());
        System.out.println("ide=" + subObject.get("ide").getAsString());
    }*/
} catch (JsonIOException e) {
    e.printStackTrace();
} catch (JsonSyntaxException e) {
    e.printStackTrace();
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值