diff --git a/CHANGELOG.md b/CHANGELOG.md
index bd941c273..3ee138c09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,15 +3,17 @@
-------------------------------------------------------------------------------------------------------------
-# 5.7.6 (2021-07-29)
+# 5.7.6 (2021-07-30)
### 🐣新特性
* 【core 】 增加LookupFactory和MethodHandleUtil(issue#I42TVY@Gitee)
* 【core 】 改进RegexPool.TEL支持无-号码(pr#387@Gitee)
* 【core 】 PhoneUtil中新增获取固话号码中区号,以及固话号码中号码的方法(pr#387@Gitee)
+* 【json 】 JSONGetter增加getLocalDateTime方法(pr#387@Gitee)
+* 【core 】 增加JNDIUtil(issue#1727@Github)
### 🐞Bug修复
-* 【jwt 】 修复JWTUtil中几个方法非static的问题(pr#386@Gitee)
+* 【jwt 】 修复JWTUtil中几个方法非static的问题(issue#1735@Github)
-------------------------------------------------------------------------------------------------------------
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java
index 28b5f8742..2dc140d87 100755
--- a/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java
@@ -1,12 +1,56 @@
package cn.hutool.core.util;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.exceptions.UtilException;
+import cn.hutool.core.map.MapUtil;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;
+import java.util.Hashtable;
import java.util.Map;
+/**
+ * JNDI工具类
+ * JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,
+ * 它是为JAVA应用程序提供命名和目录访问服务的API(Application Programing Interface,应用程序编程接口)。
+ *
+ * @author loolY
+ * @since 5.7.7
+ */
public class JNDIUtil {
- public static InitialDirContext createInitialDirContext(Map environment){
-// return new InitialDirContext(Convert.convert(Hashtable.class, environment));
- return null;
+ /**
+ * 创建{@link InitialDirContext}
+ *
+ * @param environment 环境参数,{code null}表示无参数
+ * @return {@link InitialDirContext}
+ */
+ public static InitialDirContext createInitialDirContext(Map environment) {
+ try {
+ if (MapUtil.isEmpty(environment)) {
+ return new InitialDirContext();
+ }
+ return new InitialDirContext(Convert.convert(Hashtable.class, environment));
+ } catch (NamingException e) {
+ throw new UtilException(e);
+ }
+ }
+
+ /**
+ * 创建{@link InitialContext}
+ *
+ * @param environment 环境参数,{code null}表示无参数
+ * @return {@link InitialContext}
+ */
+ public static InitialContext createInitialContext(Map environment) {
+ try {
+ if (MapUtil.isEmpty(environment)) {
+ return new InitialContext();
+ }
+ return new InitialContext(Convert.convert(Hashtable.class, environment));
+ } catch (NamingException e) {
+ throw new UtilException(e);
+ }
}
}
diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java b/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java
index e1901bb41..d0ac50cc2 100644
--- a/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java
+++ b/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java
@@ -4,9 +4,11 @@ import cn.hutool.core.bean.OptionalBean;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.convert.ConvertException;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.getter.OptNullBasicTypeFromObjectGetter;
import cn.hutool.core.util.StrUtil;
+import java.time.LocalDateTime;
import java.util.Date;
/**
@@ -135,6 +137,37 @@ public interface JSONGetter extends OptNullBasicTypeFromObjectGetter {
return Convert.toDate(obj, defaultValue);
}
+ /**
+ * 获取{@link LocalDateTime}类型值
+ *
+ * @param key 键
+ * @param defaultValue 默认值
+ * @return {@link LocalDateTime}
+ * @since 5.7.7
+ */
+ default LocalDateTime getLocalDateTime(K key, LocalDateTime defaultValue){
+ // 默认转换
+ final Object obj = getObj(key);
+ if (null == obj) {
+ return defaultValue;
+ }
+ if(obj instanceof LocalDateTime){
+ return (LocalDateTime) obj;
+ }
+
+ String format = OptionalBean.ofNullable(getConfig()).getBean(JSONConfig::getDateFormat).get();
+ if(StrUtil.isNotBlank(format)){
+ // 用户指定了日期格式,获取日期属性时使用对应格式
+ final String str = Convert.toStr(obj);
+ if(null == str){
+ return defaultValue;
+ }
+ return LocalDateTimeUtil.parse(str, format);
+ }
+
+ return Convert.toLocalDateTime(obj, defaultValue);
+ }
+
/**
* 获取指定类型的对象
* 转换失败或抛出异常