springboot项目加载json文件做数据

文章描述了一个使用SpringBoot开发的RESTfulAPI控制器ConstructAccountController,它通过JsonHelper从classpath中的contract.json文件加载JSON数据并返回查询结果。JsonHelper类负责读取资源文件并转换为JSONArray。

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
@Tag(name = "合同管理")
@RequestMapping("/constructAccount")
public class ConstructAccountController {
    @Autowired
    private ResourceLoader resourceLoader;

    @ApiOperationSupport(order = 1)
    @Operation(summary = "查询合同列表")

    @GetMapping(value = "/list")
    public RestResult getListByQueryCondition() {
        JSONArray list = JsonHelper.jsonFileLoad(resourceLoader, "contract.json");
        return RestResult.ok(list );
    }

}

ConstructAccountController 如上;

JsonHelper如下

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * @author huc
 * @date 2024-03-05 16:27
 **/
@Slf4j
public class JsonHelper {

    public static JSONArray jsonFileLoad(ResourceLoader resourceLoader, String fileName) {
        Resource jsonFile = resourceLoader.getResource("classpath:" + fileName);

        String jsonStr;
        try (InputStream inputStream = jsonFile.getInputStream()) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            String line;

            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
            }
            jsonStr = stringBuilder.toString();

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        JSONArray jsonArray = JSONObject.parseArray(jsonStr);
        log.info("加载classpath:{}数据成功,共{}条", fileName, jsonArray.size());
        return jsonArray;

    }

}

Spring Boot中解析JSON文件可以通过多种方式实现,其中最常见的是利用`Jackson`库或者`Gson`库。以下是关于如何在Spring Boot应用程序中解析JSON文件的具体方法。 ### 使用 Jackson 库解析 JSON 文件 #### 配置依赖项 为了使用 `Jackson` 来处理 JSON 数据,需要确保项目的构建工具(Maven 或 Gradle)已经包含了必要的依赖项: 对于 Maven 用户: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> ``` 对于 Gradle 用户: ```gradle implementation 'com.fasterxml.jackson.core:jackson-databind' ``` #### 创建实体类映射 JSON 结构 假设有一个名为 `person.json` 的文件,其结构如下: ```json { "name": "John Doe", "age": 30, "email": "john.doe@example.com" } ``` 可以创建一个对应的 Java 类来表示这个 JSON 对象: ```java public class Person { private String name; private int age; private String email; // Getters and Setters 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; } } ``` #### 编写服务逻辑读取并解析 JSON 文件 下面展示了一个简单的例子,说明如何加载本地磁盘上的 JSON 文件,并将其转换为对象: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; public class JsonParserService { public static void main(String[] args) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); File jsonFile = new File("path/to/person.json"); Person person = objectMapper.readValue(jsonFile, Person.class); System.out.println(person.getName()); System.out.println(person.getAge()); System.out.println(person.getEmail()); } } ``` 此代码片段展示了如何通过 `ObjectMapper` 将 JSON 文件的内容反序列化成指定类型的 Java 实体对象[^1]。 ### 总结 上述过程涵盖了从配置环境到编写具体业务逻辑的所有必要步骤。值得注意的是,默认情况下 Spring Boot 已经集成了 Jackson 支持,因此大多数场景下无需额外引入其他库即可完成基本功能需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值