// Path: src/org/dazzle/common/exception/BaseException.java
// public class BaseException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 7369919371075409501L;
// 	
// 	private String code = null;
// 
// 	/** 获取异常编码 
// 	 * @author hcqt@qq.com*/
// 	public String getCode() {
// 		if(null != code) {
// 			return code;
// 		}
// 		return code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException() {
// 		super();
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg));
// 		this.code = code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Throwable cause, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg), cause);
// 		this.code = code;
// 	}
// 
// }


import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.dazzle.common.exception.BaseException;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
package org.dazzle.utils;




/**本软件为开源项目，最新项目发布于github，可提交您的代码到本开源软件，项目网址：<a href="https://github.com/hcqt/dazzle">https://github.com/hcqt/dazzle</a><br />
 * 本软件内的大多数方法禁止Override，原因是作者提倡组合，而非继承，如果您确实需要用到继承，而又希望用本软件提供的方法名称与参数列表，建议您自行采用适配器设计模式，逐个用同名方法包裹本软件所提供的方法，这样您依然可以使用继承
 * @see #toObj(String)
 * @author hcqt@qq.com*/
public class JsonUtils {

    /**把json字符串转换成集合类<br />
     * array将转换为List<Object>对象<br />
     * key-value将转换为Map<String, Object>对象<br />
     * 普通类型将转换为String<br />
     * 若json为数组与键值对嵌套，将会转换为list与map嵌套，嵌套不限层级
     * @author hcqt@qq.com */
    public static Object toObj(final String jsonString) {
        if(jsonString != null) {
            return toObj0(new JsonParser().parse(jsonString), null, null);
        } else {
            return null;
        }
    }

    /** hcqt@qq.com */
    public static Object toObj(String jsonString, @SuppressWarnings("rawtypes") Class listClazz, @SuppressWarnings("rawtypes") Class mapClazz) {
        return toObj0(new JsonParser().parse(jsonString), listClazz, mapClazz);
    }

    /**一些dom4j、response等流对象无法转换
     * @author hcqt@qq.com */
    public static String toJson(Object obj) {
        if(obj == null) {
// Path: src/org/dazzle/common/exception/BaseException.java
// public class BaseException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 7369919371075409501L;
// 	
// 	private String code = null;
// 
// 	/** 获取异常编码 
// 	 * @author hcqt@qq.com*/
// 	public String getCode() {
// 		if(null != code) {
// 			return code;
// 		}
// 		return code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException() {
// 		super();
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg));
// 		this.code = code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Throwable cause, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg), cause);
// 		this.code = code;
// 	}
// 
// }


// Path: src/org/dazzle/utils/JsonUtils.java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.dazzle.common.exception.BaseException;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;

package org.dazzle.utils;




/**本软件为开源项目，最新项目发布于github，可提交您的代码到本开源软件，项目网址：<a href="https://github.com/hcqt/dazzle">https://github.com/hcqt/dazzle</a><br />
 * 本软件内的大多数方法禁止Override，原因是作者提倡组合，而非继承，如果您确实需要用到继承，而又希望用本软件提供的方法名称与参数列表，建议您自行采用适配器设计模式，逐个用同名方法包裹本软件所提供的方法，这样您依然可以使用继承
 * @see #toObj(String)
 * @author hcqt@qq.com*/
public class JsonUtils {

    /**把json字符串转换成集合类<br />
     * array将转换为List<Object>对象<br />
     * key-value将转换为Map<String, Object>对象<br />
     * 普通类型将转换为String<br />
     * 若json为数组与键值对嵌套，将会转换为list与map嵌套，嵌套不限层级
     * @author hcqt@qq.com */
    public static Object toObj(final String jsonString) {
        if(jsonString != null) {
            return toObj0(new JsonParser().parse(jsonString), null, null);
        } else {
            return null;
        }
    }

    /** hcqt@qq.com */
    public static Object toObj(String jsonString, @SuppressWarnings("rawtypes") Class listClazz, @SuppressWarnings("rawtypes") Class mapClazz) {
        return toObj0(new JsonParser().parse(jsonString), listClazz, mapClazz);
    }

    /**一些dom4j、response等流对象无法转换
     * @author hcqt@qq.com */
    public static String toJson(Object obj) {
        if(obj == null) {
            throw new BaseException("json_convert_3ghc", "obj参数不能为空");