当前位置: 首页 > news >正文

java配置一个json文件_Java 使用json 做配置文件

概述

经常会用到通过配置文件,去配置一些参数,java里面本来是有配置文件的,但是导入很麻烦的,自从我用了json之后,从此一切配置文件都见鬼去吧.

1.下载gson解析json文件的jar包

首先我们要导入一个解析json文件的jar包,下载连接如下所示:

2.导入gson包到当前工程

eclipse 下面鼠标选中 JRE System Libraries -> Build Path -> Configure Build Path找到 Libraries 选项卡,Add External JARs ,找到刚才下载的gson jar包 选择,导入到当前工程。

3.读取json文件转换为字符串

如下所示代码,方法入口参数为文件名,记得要带上路径

public String readToString(String fileName) {

String encoding = "UTF-8";

File file = new File(fileName);

Long filelength = file.length();

byte[] filecontent = new byte[filelength.intValue()];

try {

FileInputStream in = new FileInputStream(file);

in.read(filecontent);

in.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

try {

return new String(filecontent, encoding);

} catch (UnsupportedEncodingException e) {

System.err.println("The OS does not support " + encoding);

e.printStackTrace();

return null;

}

}

4.解析字符串为java类

解析为java类的过程是json序列化的过程,如下所示:

public class ImportCfgFile{

public static inicfg ini = new inicfg();

public ImportCfgFile(){

Gson gson = new Gson();

String str = ini.readToString("config.json");

try {

//str = gson.toJson(ini);

//System.out.println("json 格式:"+str);

ini = gson.fromJson(str.trim(), inicfg.class);

//System.out.println("配置文件:\r\n"+str);

} catch (Exception e) {

System.out.println("配置文件读取失败,异常退出");

return ;

}

}

}

其中inicfg是一个用户定义的要和json文件对应的类,写配置文件最好先按照inicfg类的方式生成类似的json字符串,使用str = gson.toJson(ini) ,记得要对ini初始化才可以,这样我们拷贝打印出来的消息到config.json文件里面,就不会抛出解析失败的异常了

相关文章:

  • java 同时使用多个流_如何在带有lambda表达式的java 8中使用多个流...
  • 用java在JPanel中建一个表格_java常用面板(JPanel、JScrollPane)
  • map在Java集合_Java 集合 -- Map
  • jquery给日期赋值_jQuery 取值、赋值的基本方法整理
  • java 内部类定于_搞懂 JAVA 内部类
  • java二分法选相关择题_Java考试-2018年全国计算机二级考试精选习题及答案
  • java 表格类_Java动态表格类(DyTable)
  • mysql zhs16gbk_ASM磁盘组剔盘、加盘实施过程
  • java 实现动态验证码_java Servlet 实现动态验证码图片示例
  • Java多线程实现的四种方式_多线程实现的四种方式
  • plot python 修改属性_详解Matplotlib绘图之属性设置
  • ajax传值 vue_vue2.0 axios post请求传参问题(ajax请求)
  • ant构建 java标签用法_Ant构建
  • java readshort_short readShort
  • php读取文本写入数据库,PHP读取TXT文件写入数据库
  • [case10]使用RSQL实现端到端的动态查询
  • 《Java编程思想》读书笔记-对象导论
  • 【React系列】如何构建React应用程序
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • co.js - 让异步代码同步化
  • E-HPC支持多队列管理和自动伸缩
  • ES学习笔记(12)--Symbol
  • flutter的key在widget list的作用以及必要性
  • Spring Cloud Feign的两种使用姿势
  • Tornado学习笔记(1)
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 如何编写一个可升级的智能合约
  • 软件开发学习的5大技巧,你知道吗?
  • 小程序开发中的那些坑
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​插件化DPI在商用WIFI中的价值
  • "无招胜有招"nbsp;史上最全的互…
  • # 安徽锐锋科技IDMS系统简介
  • (1)虚拟机的安装与使用,linux系统安装
  • (java)关于Thread的挂起和恢复
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转) 深度模型优化性能 调参
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)memcache、redis缓存
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 中创建支持集合初始化器的类型
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [22]. 括号生成
  • [Android]使用Retrofit进行网络请求
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [BT]BUUCTF刷题第9天(3.27)
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#基础知识系列]专题十七:深入理解动态类型