package com.bocloud.ims.common.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.util.StringUtils;

/**
 * 阿里巴巴的JSON工具类
 * 
 * <pre>
 * fastjson入口类是com.alibaba.fastjson.JSON，主要的API是JSON.toJSONString和parseObject。
 * 
 * package com.alibaba.fastjson;
 * public abstract class JSON {
 *       public static final String toJSONString(Object object);
 *       public static final <T> T parseObject(String text, Class<T> clazz, Feature... features);
 * }
 * 
 * 序列化： 
 * String jsonString = JSON.toJSONString(obj);
 * 
 * 反序列化： 
 * VO vo = JSON.parseObject("...", VO.class);
 * 
 * 泛型反序列化： 
 * import com.alibaba.fastjson.TypeReference;
 * 
 * List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});
 * 
 * 其它API：
 * public static final JSONObject parseObject(String text)； // 把JSON文本parse成JSONObject    
 * public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
 * public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
 * public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
 * </pre>
 * 
 * @author Shawpin Shi
 * @since 2016-9-1
 */
public class FastjsonUtils {
	/**
	 * json字符串是否可以转换为JSONObject
	 * 
	 * @author Shawpin Shi
	 * @since 2016-9-1
	 */
	public static boolean isJSONObject(String jsonString) {
		if (StringUtils.hasText(jsonString)) {
			try {
				JSON.parseObject(jsonString, JSONObject.class);
				return true;
			} catch (Exception e) {
				return false;
			}
		} else {
			return false;
		}
	}

	/**
	 * json字符串是否可以转换为JSONArray
	 *
	 * @author Shawpin Shi
	 * @since 2021/3/12
	 */
	public static boolean isJSONArray(String jsonString) {
		if (StringUtils.hasText(jsonString)) {
			try {
				JSON.parseObject(jsonString, JSONArray.class);
				return true;
			} catch (Exception e) {
				return false;
			}
		} else {
			return false;
		}
	}
}
