All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy