Java | 读取resources下面的Json文件

本文介绍了如何在Java中使用Spring的ClassPathResource从resources目录下读取Json文件FedexErrorCodes.json,并通过Fastjson库操作Json对象。提供了getJSONByKey方法,展示如何根据key获取json数据。

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

Java | 读取resources下面的Json文件


目录结构

在这里插入图片描述
在这里插入图片描述


工具类

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ClassPathResource;

import java.io.InputStreamReader;
import java.io.Reader;

/**
 * 描述:对Json文件的读操作
 * 创建人:慌途L
 */
public class ReadJSONFileUtil {
    /**
     * 根据key获取json
     * @param filepath 文件路径
     * @param key json的key
     * @return
     */
    public static Object getJSONByKey(String filepath, String key){
        String text =  LocalJSONFileUtil.getFileText(filepath);
        JSONObject object = new JSONObject();
        if (StringUtils.isNoneBlank(text)){
            object = parseObject(text);
        }
        return object.get(key);
    }

    /**
     * 将json 字符串转换为json对象
     */
    public static JSONObject parseObject(String text) {
        return JSONObject.parseObject(text);
    }

    /**
     * 获取文件内文本
     * @param filepath
     * @return
     */
    public static String getFileText(String filepath){
        StringBuffer sb = new StringBuffer();
        try{
            ClassPathResource classPathResource = new ClassPathResource(filepath);
            Reader reader = new InputStreamReader(classPathResource.getInputStream());
            int ch = 0;
            while ((ch = reader.read())!=-1){
                sb.append((char)ch);
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString().replaceAll("\r\n","").replaceAll(" ","");
    }
}

使用

@GetMapping("/123")
public void test123() {
    String fileText = ReadJSONFileUtil.getFileText("static/FedexErrorCodes.json");
    JSONObject jsonObject = JSONObject.parseObject(fileText);
    JSONArray errorList = JSONArray.parseArray(jsonObject.getString("errorList"));
    HashMap<String, String> map = new HashMap<>();
    System.out.println(errorList);
}

FedexErrorCodes.json(一小节)

{
  "errorList" : [
    {
      "code" : "SHIPMENT.VAGUECOMMODITYDESC.ERROR",
      "errorDescription" : "货品{COMMODITY_INDEX}的描述含糊不清,EXPORTDETAIL.B13AFILINGOPTION.INVALID不予接受。"
    },

    {
      "code" : "EXPORTDETAIL.B13AFILLINGOPTION.REQUIRED",
      "errorDescription" : "需为此货件提供加拿大出口申报单。请更新后重试。"
    },

    {
      "code" : "EXPORTDETAIL.B13AFILINGOPTION.INVALID",
      "errorDescription" : "加拿大出口申报单提交选项丢失或无效。请更新后重试。"
    }]
}


欢迎关注公众号:慌途L
后面会慢慢将文章迁移至公众号,也是方便在没有电脑的情况下可以进行翻阅,更新的话会两边同时更新,大家不用担心!
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值