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

com.dahuatech.hutool.json.JSONGetter Maven / Gradle / Ivy

package com.dahuatech.hutool.json;

import com.dahuatech.hutool.core.convert.ConvertException;
import com.dahuatech.hutool.core.getter.OptNullBasicTypeFromObjectGetter;

/**
 * 用于JSON的Getter类,提供各种类型的Getter方法
 *
 * @author Looly
 * @param  Key类型
 */
public abstract class JSONGetter extends OptNullBasicTypeFromObjectGetter {

  /**
   * key对应值是否为null或无此key
   *
   * @param key 键
   * @return true 无此key或值为null或{@link JSONNull#NULL}返回false,其它返回true
   *     
   */
  public boolean isNull(K key) {
    return JSONNull.NULL.equals(this.getObj(key));
  }

  /**
   * 获取字符串类型值,并转义不可见字符,如'\n'换行符会被转义为字符串"\n"
   *
   * @param key 键
   * @return 字符串类型值
   * @since 4.2.2
   */
  public String getStrEscaped(K key) {
    return getStrEscaped(key, null);
  }

  /**
   * 获取字符串类型值,并转义不可见字符,如'\n'换行符会被转义为字符串"\n"
   *
   * @param key 键
   * @param defaultValue 默认值
   * @return 字符串类型值
   * @since 4.2.2
   */
  public String getStrEscaped(K key, String defaultValue) {
    return JSONUtil.escape(getStr(key, defaultValue));
  }

  /**
   * 获得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 */ public 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