com.xiaoleilu.hutool.json.JSONGetter Maven / Gradle / Ivy
package com.xiaoleilu.hutool.json;
import com.xiaoleilu.hutool.convert.ConvertException;
import com.xiaoleilu.hutool.getter.OptNullBasicTypeFromObjectGetter;
/**
* 用于JSON的Getter类,提供各种类型的Getter方法
* @author Looly
*
* @param Key类型
*/
public abstract class JSONGetter extends OptNullBasicTypeFromObjectGetter{
@Override
public String getStr(K key, String defaultValue) {
String str = super.getStr(key, defaultValue);
if(null == str) {
return defaultValue;
}
return JSONUtil.escape(str);
}
/**
* 获得JSONArray对象
* 如果值为其它类型对象,尝试转换为{@link JSONArray}返回,否则抛出异常
*
* @param key KEY
* @return JSONArray对象,如果值为null或者非JSONArray类型,返回null
*/
public 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);
}
/**
* 获得JSONObject对象
* 如果值为其它类型对象,尝试转换为{@link JSONObject}返回,否则抛出异常
*
* @param key KEY
* @return JSONArray对象,如果值为null或者非JSONObject类型,返回null
*/
public 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);
}
/**
* 从JSON中直接获取Bean对象
* 先获取JSONObject对象,然后转为Bean对象
*
* @param Bean类型
* @param key KEY
* @param beanType Bean类型
* @return Bean对象,如果值为null或者非JSONObject类型,返回null
* @since 3.1.1
*/
public 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
*/
public 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
*/
@SuppressWarnings("unchecked")
public T get(K key, Class type, boolean ignoreError) throws ConvertException{
final Object value = this.getObj(key);
if(null == value){
return null;
}
return (T) InternalJSONUtil.jsonConvert(type, value, ignoreError);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy