说明
今天工作中需要使用带第三方的接口,第三方的接口某些参数是可变的且调用其他接口时需要用到这些参数,介于某些原因做了一个协调系统处理该业务,协调系统没有数据库连接,缓存会导致重启丢失,只能使用文件存储相关数据,综合考虑使用xxxxx.json作为数据持久化方式。
做的过程中发现该类似乎各种文件都可以使用。
正文
JSON文件读写工具类
import cn.pminfo.credit.model.CreaditConfigList;
import cn.pminfo.credit.model.CreditConfig;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.List;
/**
* @Project : testsystem
* @Package Name : com.codeyi.common.utils
* @Company
* @Author Codeyi on 2019-10-14.
* @Creation Date: 2019年10月14日 18:53
* @Description :描述
*/
public class JsonFileUtil {
/**
* 读JSON文件内容
*
* @param filePath 绝对路径
* @return 文件内容
*/
public static String readJsonFile(String filePath) {
try {
File file = new File(filePath);
return FileUtils.readFileToString(file, "UTF-8");
} catch (Exception e) {
return null;
}
}
/**
* JSON文件写入
*
* @param filePath 绝对路径
* @param jsonStr 写入内容(完整)
*/
public static void writeJsonFile(String filePath, String jsonStr) {
FileWriter fw;
try {
// File file = new File(filePath);
// FileUtils.writeStringToFile(file, jsonStr, "UTF-8");
fw = new FileWriter(filePath);
PrintWriter out = new PrintWriter(fw);
out.write(jsonStr);
out.println();
fw.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
String userDir = System.getProperty("user.dir");
String filePath = "/credit-web/src/main/java/cn/pminfo/credit/config/credit-config.json";
filePath = userDir + filePath;
String jsonStr = readJsonFile(filePath);
System.out.print(jsonStr);
JSONObject jsonObject = JSON.parseObject(jsonStr);
CreaditConfigList creaditConfigList = JSON.parseObject(jsonStr, new TypeReference<CreaditConfigList>() {
});
List<CreditConfig> creditConfigList = JSON.parseObject(jsonObject.get("creditConfigList").toString(), new TypeReference<List<CreditConfig>>() {
});
System.out.print("OK");
}
}
外部调用方式
JSON文件读测试
/**
* JSON配置文件地址
*/
private static final String configFilePath = "/config/credit-config.json";
//获取文件绝对路径
URL url = this.getClass().getResource(configFilePath);
String filePath = url.getPath();
//读取文件内容
String jsonStr = JsonFileUtil.readJsonFile(filePath);
JSONObject jsonObject = JSON.parseObject(jsonStr);
List<CreditConfig> creditConfigList = JSON.parseObject(jsonObject.get("creditConfigList").toString(), new TypeReference<List<CreditConfig>>() {
});
JSON文件写测试
URL url = this.getClass().getResource(testConfigFilePath);
String filePath = url.getPath();
CreditConfig creditConfig = new CreditConfig();
creditConfig.setCityCode("ZJ");
String jsonStr = JSON.toJSONString(creditConfig);
JsonFileUtil.writeJsonFile(filePath, jsonStr);
结尾
亲测可用,这里路径可能需要注意下
- 文件路径为:/resources/config/test.json,
- 读写的编译后的文件路径为:D:*****\target***\WEB-INF\classes\config\test.json