spring boot 解决打包发布后读取不到 json文件以及如何读取json文件的问题

当SpringBoot应用从本地IDE运行转移到打包部署后,可能会遇到读取json文件失败的问题。解决方法是将json文件放入static目录,并使用ClassPathResource和fastJson进行读取。通过示例代码展示了如何正确读取并解析json内容,从而获取所需键值对。
摘要由CSDN通过智能技术生成

spring boot里读取json文件是一个常见操作,之前在本地idea运行时候读取json文件没有任何问题,但是打包发布后运行会读取不到,解决方法:

  1. 要将json文件放到static目录下

  2. 读取文件要用 ClassPathResource 和 fastJson

  3. 具体操作代码:

    调用方法:

JSONObject jsonData = JSON.parseObject(BaseUtil.readJsonFileNew("static/json/ZKManageCode.json"));

readJsonNew方法:

    public static String readJsonFileNew(String jsonPath) {
        String jsonStr = "";
        try {
            ClassPathResource classPathResource = new ClassPathResource(jsonPath);
            InputStream inputStream = classPathResource.getInputStream();
            Reader reader = new InputStreamReader(inputStream, "utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

得到jsonData后就可以得到里边的json对象和对应的键值:

JSONObject jsonObj = JSON.parseObject(jsonData.getString("obj"));//获取obj 对象
String value = jsonObj.getString(dto.getVerify_type());//obj对象里,通过key获取value

大功告成!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot,你可以使用`ObjectMapper`类来读取JSON文件。 首先,确保在pom.xml文件添加以下依赖项以使用Jackson库: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> ``` 接下来,创建一个包含JSON数据的文件,例如`data.json`: ```json { "name": "John Doe", "age": 30, "email": "johndoe@example.com" } ``` 然后,创建一个Java类来映射JSON数据: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; public class DataReader { public static void main(String[] args) { ObjectMapper objectMapper = new ObjectMapper(); try { // 从文件读取JSON数据并将其映射到Java对象 Data data = objectMapper.readValue(new File("data.json"), Data.class); // 使用读取到的数据 System.out.println("Name: " + data.getName()); System.out.println("Age: " + data.getAge()); System.out.println("Email: " + data.getEmail()); } catch (IOException e) { e.printStackTrace(); } } } ``` 最后,创建一个与JSON数据字段相对应的Java类`Data`: ```java public class Data { private String name; private int age; private String email; // 省略构造函数、getter和setter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 这样,你就可以通过调用`objectMapper.readValue(new File("data.json"), Data.class)`方法将JSON数据读取到`Data`对象,并使用该对象的方法获取数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值