Code片段 : .properties属性文件操作工具类 JSON工具类

2024-05-13 01:08

本文主要是介绍Code片段 : .properties属性文件操作工具类 JSON工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!“贵专” — 泥瓦匠

一、java.util.Properties API & 案例

java.util.Properties 是一个属性集合。常见的api有如下:
  • load(InputStream inStream)  从输入流中读取属性
  • getProperty(String key)  根据key,获取属性值
  • getOrDefault(Object key, V defaultValue) 根据key对象,获取属性值需要强转
首先在resources目录下增加/main/resources/fast.properties:
fast.framework.name=fast
fast.framework.author=bysocket
fast.framework.age=1
然后直接上代码PropertyUtil.java:
/*** .properties属性文件操作工具类** Created by bysocket on 16/7/19.*/
public class PropertyUtil {private static final Logger LOGGER = LoggerFactory.getLogger(PropertyUtil.class);/** .properties属性文件名后缀 */public static final String PROPERTY_FILE_SUFFIX	= ".properties";/*** 根据属性文件名,获取属性** @param propsFileName* @return*/public static Properties getProperties(String propsFileName) {if (StringUtils.isEmpty(propsFileName))throw new IllegalArgumentException();Properties  properties  = new Properties();InputStream inputStream = null;try {try {/** 加入文件名后缀 */if (propsFileName.lastIndexOf(PROPERTY_FILE_SUFFIX) == -1) {propsFileName += PROPERTY_FILE_SUFFIX;}inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(propsFileName);if (null != inputStream)properties.load(inputStream);} finally {if ( null != inputStream) {inputStream.close();}}} catch (IOException e) {LOGGER.error("加载属性文件出错!",e);throw new RuntimeException(e);}return properties;}/*** 根据key,获取属性值** @param properties* @param key* @return*/public static String getString(Properties properties, String key){return properties.getProperty(key);}/*** 根据key,获取属性值** @param properties* @param key* @param defaultValue* @return*/public static String getStringOrDefault(Properties properties, String key, String defaultValue){return properties.getProperty(key,defaultValue);}/*** 根据key,获取属性值** @param properties* @param key* @param defaultValue* @param <V>* @return*/public static <V> V getOrDefault(Properties properties, String key, V defaultValue){return (V) properties.getOrDefault(key,defaultValue);}
}
UT如下:
/*** {@link PropertyUtil} 测试用例* <p/>* Created by bysocket on 16/7/19.*/
public class PropertyUtilTest {@Testpublic void testGetProperties() {Properties properties = PropertyUtil.getProperties("fast");String fastFrameworkName = properties.getProperty("fast.framework.name");String authorName        = properties.getProperty("fast.framework.author");Object age               = properties.getOrDefault("fast.framework.age",10);Object defaultVal        = properties.getOrDefault("fast.framework.null",10);System.out.println(fastFrameworkName);System.out.println(authorName);System.out.println(age.toString());System.out.println(defaultVal.toString());}@Testpublic void testGetString() {Properties properties = PropertyUtil.getProperties("fast");String fastFrameworkName = PropertyUtil.getString(properties,"fast.framework.name");String authorName        = PropertyUtil.getString(properties,"fast.framework.author");System.out.println(fastFrameworkName);System.out.println(authorName);}@Testpublic void testGetOrDefault() {Properties properties = PropertyUtil.getProperties("fast");Object age               = PropertyUtil.getOrDefault(properties,"fast.framework.age",10);Object defaultVal        = PropertyUtil.getOrDefault(properties,"fast.framework.null",10);System.out.println(age.toString());System.out.println(defaultVal.toString());}
}
Run Console:
1
10
fast
bysocket
1
10
fast
bysocket
相关对应代码分享在 Github 主页

二、JACKSON 案例

首先,加个Maven 依赖:
                <!-- Jackson --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-jaxrs</artifactId><version>1.9.13</version></dependency>
 然后直接上代码JSONUtil:
/*** JSON 工具类* <p/>* Created by bysocket on 16/7/19.*/
public class JSONUtil {private static final Logger LOGGER = LoggerFactory.getLogger(JSONUtil.class);/*** 默认JSON类**/private static final ObjectMapper mapper = new ObjectMapper();/*** 将 Java 对象转换为 JSON 字符串** @param object* @param <T>* @return*/public static <T> String toJSONString(T object) {String jsonStr;try {jsonStr = mapper.writeValueAsString(object);} catch (Exception e) {LOGGER.error("Java Object Can't covert to JSON String!");throw new RuntimeException(e);}return jsonStr;}/*** 将 JSON 字符串转化为 Java 对象** @param json* @param clazz* @param <T>* @return*/public static <T> T toObject(String json, Class<T> clazz) {T object;try {object = mapper.readValue(json, clazz);} catch (Exception e) {LOGGER.error("JSON String Can't covert to Java Object!");throw new RuntimeException(e);}return object;}}
UT如下:
/*** {@link JSONUtil} 测试用例* <p/>* Created by bysocket on 16/7/19.*/
public class JSONUtilTest {@Testpublic void testToJSONString() {JSONObject jsonObject = new JSONObject(1, "bysocket", 33);String jsonStr = JSONUtil.toJSONString(jsonObject);Assert.assertEquals("{\"age\":1,\"name\":\"bysocket\",\"id\":33}", jsonStr);}@Test(expected = RuntimeException.class)public void testToJSONStringError() {JSONUtil.toJSONString(System.out);}@Testpublic void testToObject() {JSONObject jsonObject = new JSONObject(1, "bysocket", 33);String jsonStr = JSONUtil.toJSONString(jsonObject);JSONObject resultObject = JSONUtil.toObject(jsonStr, JSONObject.class);Assert.assertEquals(jsonObject.toString(), resultObject.toString());}@Test(expected = RuntimeException.class)public void testToObjectError() {JSONUtil.toObject("{int:1}", JSONObject.class);}
}class JSONObject {int age;String name;Integer id;public JSONObject() {}public JSONObject(int age, String name, Integer id) {this.age = age;this.name = name;this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Overridepublic String toString() {return "JSONObject{" +"age=" + age +", name='" + name + '\'' +", id=" + id +'}';}
}
Run Console(抛出了异常信息):
16/07/19 23:09:13 ERROR util.JSONUtil: JSON String Can't covert to Java Object!
16/07/19 23:09:13 ERROR util.JSONUtil: Java Object Can't covert to JSON String!

三、小结

相关对应代码分享在 Github 主页请看到的Java小伙伴多交流多评论改进之。参考 黄勇 smart

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。

这篇关于Code片段 : .properties属性文件操作工具类 JSON工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984254

相关文章

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum