首頁 >Java >java教程 >SpringBoot怎麼讀取資源目錄中JSON文件

SpringBoot怎麼讀取資源目錄中JSON文件

王林
王林轉載
2023-05-16 13:25:163049瀏覽

思路

使用Spring的ResourceUtils讀取資源目錄下的json檔案。

使用common-io將讀取的檔案轉換為json字串。

使用fastjson將json字串反序列為物件。

範例

SpringBoot怎麼讀取資源目錄中JSON文件

1.Maven依賴

pom.xml,主要是common-io、fastjson的引進。

<!-- 资源目录资源文件读取 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

        <!-- 反序列化json字符串 -->
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.14</version>
        </dependency>

2.json資源檔案

notice.json,簡單列舉要使用json內容。

[
  {
    "title": "新功能xxx上线",
    "content": "支持xxx"
  },
  {
    "title": "旧功能xxx下线",
    "content": "不支持xxx"
  }
]

3.讀取json的Service

3.1.定義介面

package com.example.springbootjson.service;

import com.example.springbootjson.domain.NoticeInfo;

import java.io.IOException;
import java.util.List;

/**
 * @author hongcunlin
 */
public interface NoticeService {
    /**
     * 获取公告
     *
     * @return 公告
     * @throws IOException 文件
     */
    List<NoticeInfo> getNoticeInfoList() throws IOException;
}

3.2.實作介面

這裡可以說是本文的核心部分了,具體可以看​​程式碼中的實現,透過ResourceUtils讀取notice.json這個json文件,透過common-io的FileUtils轉換文件為json字串,透過fastjson的JSON反序列json物件。

package com.example.springbootjson.service.impl;

import com.alibaba.fastjson2.JSON;
import com.example.springbootjson.domain.NoticeInfo;
import com.example.springbootjson.service.NoticeService;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ResourceUtils;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * @author hongcunlin
 */
@Service
public class NoticeServiceImpl implements NoticeService {

    @Override
    public List<NoticeInfo> getNoticeInfoList() throws IOException {
        File file = ResourceUtils.getFile("classpath:notice.json");
        String json = FileUtils.readFileToString(file, "UTF-8");
        List<NoticeInfo> noticeInfoList = JSON.parseArray(json, NoticeInfo.class);
        return noticeInfoList;
    }
}

4.測試介面

寫一個簡單的整合測試,將上述編寫的Service注入,執行方法,列印執行結果。

package com.example.springbootjson;

import com.example.springbootjson.service.NoticeService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.io.IOException;

@SpringBootTest
class SpringbootJsonApplicationTests {
    @Resource
    private NoticeService noticeService;

    @Test
    void contextLoads() throws IOException {
        System.out.println(noticeService.getNoticeInfoList());
    }
}

SpringBoot怎麼讀取資源目錄中JSON文件

可以看到,可以正常地輸出json檔案中的內容,說明我們的程式是正確的。

以上是SpringBoot怎麼讀取資源目錄中JSON文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除