com.jchanghong.json.JSONGetter Maven / Gradle / Ivy
The newest version!
package com.jchanghong.json;
import com.jchanghong.core.convert.ConvertException;
import com.jchanghong.core.getter.OptNullBasicTypeFromObjectGetter;
/**
* 用于JSON的Getter类,提供各种类型的Getter方法
*
* @param Key类型
* @author Looly
*/
public interface JSONGetter extends OptNullBasicTypeFromObjectGetter {
/**
* 获取JSON配置
*
* @return {@link JSONConfig}
* @since 5.3.0
*/
JSONConfig getConfig();
/**
* key对应值是否为null
或无此key
*
* @param key 键
* @return true 无此key或值为null
或{@link JSONNull#NULL}返回false
,其它返回true
*/
default boolean isNull(K key) {
return JSONNull.NULL.equals(this.getObj(key));
}
/**
* 获取字符串类型值,并转义不可见字符,如'\n'换行符会被转义为字符串"\n"
*
* @param key 键
* @return 字符串类型值
* @since 4.2.2
*/
default String getStrEscaped(K key) {
return getStrEscaped(key, null);
}
/**
* 获取字符串类型值,并转义不可见字符,如'\n'换行符会被转义为字符串"\n"
*
* @param key 键
* @param defaultValue 默认值
* @return 字符串类型值
* @since 4.2.2
*/
default String getStrEscaped(K key, String defaultValue) {
return JSONUtil.escape(getStr(key, defaultValue));
}
/**
* 获得JSONArray对象
* 如果值为其它类型对象,尝试转换为{@link JSONArray}返回,否则抛出异常
*
* @param key KEY
* @return JSONArray对象,如果值为null或者非JSONArray类型,返回null
*/
default JSONArray getJSONArray(K key) {
final Object object = this.getObj(key);
if (null == object) {
return null;
}
if (object instanceof JSONArray) {
return (JSONArray) object;
}
return new JSONArray(object, getConfig());
}
/**
* 获得JSONObject对象
* 如果值为其它类型对象,尝试转换为{@link JSONObject}返回,否则抛出异常
*
* @param key KEY
* @return JSONArray对象,如果值为null或者非JSONObject类型,返回null
*/
default JSONObject getJSONObject(K key) {
final Object object = this.getObj(key);
if (null == object) {
return null;
}
if (object instanceof JSONObject) {
return (JSONObject) object;
}
return new JSONObject(object, getConfig());
}
/**
* 从JSON中直接获取Bean对象
* 先获取JSONObject对象,然后转为Bean对象
*
* @param Bean类型
* @param key KEY
* @param beanType Bean类型
* @return Bean对象,如果值为null或者非JSONObject类型,返回null
* @since 3.1.1
*/
default T getBean(K key, Class beanType) {
final JSONObject obj = getJSONObject(key);
return (null == obj) ? null : obj.toBean(beanType);
}
/**
* 获取指定类型的对象
* 转换失败或抛出异常
*
* @param 获取的对象类型
* @param key 键
* @param type 获取对象类型
* @return 对象
* @throws ConvertException 转换异常
* @since 3.0.8
*/
default T get(K key, Class type) throws ConvertException {
return get(key, type, false);
}
/**
* 获取指定类型的对象
*
* @param 获取的对象类型
* @param key 键
* @param type 获取对象类型
* @param ignoreError 是否跳过转换失败的对象或值
* @return 对象
* @throws ConvertException 转换异常
* @since 3.0.8
*/
default T get(K key, Class type, boolean ignoreError) throws ConvertException {
final Object value = this.getObj(key);
if (null == value) {
return null;
}
return JSONConverter.jsonConvert(type, value, ignoreError);
}
}