Java에서 json 파일을 읽는 두 가지 방법

1 배경 소개

연구 개발 과정에서 구성 파일을 읽는 등의 반복적인 단계를 수반하는 경우가 많으며, .conf 파일일 수도 있고 .json 파일일 수도 있지만 어쨌든 결국에는 jave의 inputStream에 들어가야 합니다. .json 파일을 예로 들어 보겠습니다.

2 FileInputStream 읽기

하나의 매개변수가 필요합니다.
fileName: 파일 이름, 일반적으로 절대 경로입니다. 그렇지 않으면 찾을 수 없습니다. 또는 java 파일과 동일한 경로에

static String readWithFileInputStream(){
    
    
        String jsonString;
                //System.getProperty("user.dir")为获取根目录
                //File.separator为不同操作系统的分隔符,linux和win是不一样的
                //tempFilePath该字符串里面为我们配置文件的路径
               String fileName = "xx_config.json";
//                String tempFilePath = System.getProperty("user.dir") + File.separator + "resource" + File.separator + fileName;
//                System.out.print(tempFilePath);
        StringBuilder sb = new StringBuilder();
                try{
    
    
                    InputStream input = new FileInputStream(fileName);

                    byte[] buffer = new byte[1024];
                    int length = 0;
                    length = input.read(buffer);

                    while(length != -1){
    
    
                        sb.append(new String(buffer, 0 , length));
                        length = input.read(buffer);
                    }


                }catch (Exception e){
    
    
                    e.printStackTrace();
                }
        return    jsonString = sb.toString();
            }
      

마지막으로 문자열을 반환합니다. 그런 다음 JSON 도구를 통해 읽고 싶은 모델로 변환할 수 있습니다.

    TargetConfig config = (TargetConfig) JSON.parseObject(jsonString, TargetConfig.class);
            

그러나 이 방법은 유연하지 않으며 경로를 하드코딩하거나 절대 경로로 작성해야 합니다.

3 ClassLoader 읽기

두 개의 매개변수가 필요합니다.
fileName: 파일 이름
ClassLoader: 클래스 로더, 일반적으로 현재 클래스

    static String readWithClassLoader() throws IOException {
    
    
        String fileName = "xx_config.json";

       ClassLoader  classLoader =  TargetConfig.class.getClassLoader();

        BufferedReader reader = null;

            InputStream inputStream = classLoader.getResourceAsStream(fileName);

            reader = new BufferedReader(new InputStreamReader(inputStream));

            StringBuilder content = new StringBuilder();
            String line = reader.readLine();
            while (!StringUtil.isEmpty(line)) {
    
    
                content.append(line);
                line = reader.readLine();
            }

            return content.toString();
    }
      和之前一样,最终返回一个String。然后通过JSON工具就可以转为自己想读取到模型啦。
    TargetConfig config = (TargetConfig) JSON.parseObject(jsonString, TargetConfig.class);
            

그러나 읽기 위해 클래스 로딩을 사용하면 경로를 하드코딩할 필요가 없습니다. 첫 번째 것보다 훨씬 유연합니다.
여기에 이미지 설명 삽입

Supongo que te gusta

Origin blog.csdn.net/qq_39463175/article/details/130456989
Recomendado
Clasificación