Maison  >  Article  >  Java  >  Comment SpringBoot lit-il les fichiers JSON dans le répertoire des ressources ?

Comment SpringBoot lit-il les fichiers JSON dans le répertoire des ressources ?

王林
王林avant
2023-05-16 13:25:162953parcourir

Idée

Utilisez ResourceUtils de Spring pour lire le fichier json dans le répertoire des ressources.

Utilisez common-io pour convertir le fichier lu en chaîne json.

Utilisez fastjson pour désérialiser les chaînes json en objets.

Exemple

Comment SpringBoot lit-il les fichiers JSON dans le répertoire des ressources ?

1. Dépendance Maven

pom.xml, principalement l'introduction de common-io et 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 fichier de ressources

notice.json, répertoriez simplement le contenu json à utiliser.

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

3. Lire le service json

3.1. Définir l'interface

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. Implémenter l'interface

Cela peut être considéré comme la partie centrale de cet article. Pour plus de détails, vous pouvez voir l'implémentation dans le code et. lire notice.json via ResourceUtils Ce fichier json est converti en chaîne json via FileUtils de common-io, et l'objet json est désérialisé via le JSON de fastjson.

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. Interface de test

Écrivez un test d'intégration simple, injectez le service écrit ci-dessus, exécutez la méthode et imprimez les résultats de l'exécution.

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());
    }
}

Comment SpringBoot lit-il les fichiers JSON dans le répertoire des ressources ?

Vous pouvez voir que le contenu du fichier json peut être affiché normalement, indiquant que notre programme est correct.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer