博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Code片段 : .properties属性文件操作工具类 & JSON工具类
阅读量:5280 次
发布时间:2019-06-14

本文共 7699 字,大约阅读时间需要 25 分钟。

摘要: 原创出处: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=fastfast.framework.author=bysocketfast.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 
* @return */ public static
V getOrDefault(Properties properties, String key, V defaultValue){ return (V) properties.getOrDefault(key,defaultValue); }}

UT如下:

/** * {@link PropertyUtil} 测试用例 * 

* Created by bysocket on 16/7/19. */public class PropertyUtilTest { @Test public 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()); } @Test public 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); } @Test public 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:

110fastbysocket110fastbysocket

相关对应代码分享在 主页

二、JACKSON 案例

首先,加个Maven 依赖:

org.codehaus.jackson
jackson-mapper-asl
1.9.13
org.codehaus.jackson
jackson-jaxrs
1.9.13

  然后直接上代码JSONUtil:

/** * JSON 工具类 * 

* 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
* @return */ public static
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
* @return */ public static
T toObject(String json, Class
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} 测试用例 * 

* Created by bysocket on 16/7/19. */public class JSONUtilTest { @Test public 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); } @Test public 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; } @Override public 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!

三、小结

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

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

转载于:https://www.cnblogs.com/Alandre/p/5686725.html

你可能感兴趣的文章
java实用类
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
排序sort (一)
查看>>
Parrot虚拟机
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Struts2学习(三)
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>