Java使用ClassLoader读取外部json文件

我们有时候会遇到这样一种业务场景:某个对象是变化的,在不同项目的部署中,可能需要更改对象中的某个属性,这时如果我们将该对象写在代码里,这样不仅寻找不便,部署后也不能随便修改(修改后又要重新打包),这就需要将该对象解耦,单独抽离出来,做成一个json文件,放在resource中,这样即使项目上线后,我们也能随时改变,只需要重启即可。
读取逻辑如下图所示:
在这里插入图片描述
我们将该对象写成json格式,放在resources下的outside包中,内部是标准的json格式文件(略)。
读取对象类为OutSideRead,我们使用ClassLoader方式读取:

@Component
public class OutSideRead {

    // 直接从配置文件读取路径
    @Value("${outside.path}")
    private String path;

    public JSONObject getHumanDetail() {
        BufferedReader reader = null;

		// 使用ClassLoader方式读取
        InputStream inputStream = OutSideRead.class.getResourceAsStream(path);
        reader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder content = new StringBuilder();
        String line = null;
        try {
            line = reader.readLine();
            while (!StringUtils.isEmpty(line)) {
                content.append(line);
                line = reader.readLine();
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        String jsonString = content.toString();
        JSONObject jsonObject = JSONObject.parseObject(jsonString, JSONObject.class);
        return jsonObject;
    }
}

为了进一步解耦,文件路径我们直接写在配置文件里,getResourceAsStream指定加载的资源路径与当前类所在包的路径一致,加入了‘/’后就会从classpath的根路径下开始查找。

outside.path = /outside/human.json
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用以下步骤来读取resources中的JSON文件: 1. 首先,确保将JSON文件放置在src/main/resources目录下,这是Java默认的资源文件夹。 2. 使用`ClassLoader`类的`getResourceAsStream`方法来获取JSON文件的输入流。代码示例如下: ``` InputStream inputStream = getClass().getClassLoader().getResourceAsStream("filename.json"); ``` 这里的`filename.json`是你要读取JSON文件文件名。 3. 使用`BufferedReader`类来读取输入流中的内容。代码示例如下: ``` BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); ``` 4. 使用`StringBuilder`类来构建JSON文件的内容。代码示例如下: ``` StringBuilder jsonContent = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { jsonContent.append(line); } ``` 5. 最后,将读取到的JSON内容转换为标准的JSON对象。你可以使用任何适合的JSON库来完成此操作,例如`JSONObject`类或`Gson`库。 综上所述,以上是读取resources中的JSON文件的步骤。你可以根据你的具体需求进行适当的调整和扩展。<span class="em">1</span> #### 引用[.reference_title] - *1* [java怎么读取resources下面的JSON文件](https://blog.csdn.net/laughing1997/article/details/103589602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值