本文主要是介绍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对象,获取属性值需要强转
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工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!