java中读取json配置文件

在自动化接口测试中,我们会将参数放在一个配置文件了,这样在我们每次跑case时,就不需要改动代码,只需要改动配置文件,就可以实现不用的参数传入case了

那么在java中,怎样读取json的配置文件呢?
首先我们需要了解到的是InputStream 和 OutputStream,它们分别为各种输入输出字节流的基类,所有字节流都继承这两个基类。

我们将配置文件放入根目录下的resource目录下,配置文件名字为file的txt文件
文件内容为:

{
  "q": {
    "request": {
      "a": 1,
      "b": "2"
    }
  },

}

那么我们要怎么读取该配置文件呢?
大概分为了三个步骤:

  1. 获取配置文件的路径
    //System.getProperty("user.dir")为获取根目录
    //File.separator为不同操作系统的分隔符,linux和win是不一样的
    //tempFilePath该字符串里面为我们配置文件的路径
        String tempFilePath = System.getProperty("user.dir") + File.separator + "resource" + File.separator + "file";
        System.out.print(tempFilePath);

除了上面的方式还可以使用getResourceAsStream函数
该函数具体使用方法:我们需要将我们的配置文件放在resouces中
如下图:
java中读取json配置文件_第1张图片
备注:文件夹一定要有这个标识
设置过程:idea右上角选择该文件,点击,打开后选择需要设置的文件夹,点击resouces就好啦
在这里插入图片描述
完整代码:

//路径从resouces目录下一级开始
    String tempFilePath = "/data/1";
    InputStream input = jsonobject.class.getResourceAsStream(tempFilePath);
  1. 将json文件读出来保存在string对象中
        try{
            InputStream input = new FileInputStream(tempFilePath);
            StringBuilder sb = new StringBuilder();
            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);
            }
            String jsonString = sb.toString();
            System.out.print(jsonString);

将json文件读到string对象中还可以使用一个工具类,这样两行代码就可以搞定了,作用和上面一样:

        String jsonString = IOUtils.toString(input);
        System.out.print(jsonString);
  1. 将字符串加载到jsonObject中,可以逐级获取所需要的值
//将字符串加载到jsonObject对象中
    JSONObject jsonObject = JSON.parseObject(jsonString);
   //逐级获取需要的变量
    Long a= jsonObject.getJSONObject("q").getJSONObject("request").getLongValue("a");
    System.out.print(a);

以下是全部代码:

package aaaa;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
import org.slf4j.Logger;

import java.io.*;

public class Test111 {
    Logger logger = LoggerFactory.getLogger(Test.class);
    
    @Test
    private void test1(){
    //System.getProperty("user.dir")为获取根目录
    //File.separator为不同操作系统的分隔符,linux和win是不一样的
    //tempFilePath该字符串里面为我们配置文件的路径
        String tempFilePath = System.getProperty("user.dir") + File.separator + "resource" + File.separator + "file";
        System.out.print(tempFilePath);
        try{
            InputStream input = new FileInputStream(tempFilePath);
            StringBuilder sb = new StringBuilder();
            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);
            }
            String jsonString = sb.toString();
            System.out.print(jsonString);

         //将字符串加载到jsonObject对象中
            JSONObject jsonObject = JSON.parseObject(jsonString);
            //逐级获取需要的变量
            Long a= jsonObject.getJSONObject("q").getJSONObject("request").getLongValue("a");
            System.out.print(a);



        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

你可能感兴趣的:(java)