接口设计
8.3.1 设计原则
JSON转换器组件,命名为JsonConverter,由于其应用场景就是进行JSON文本串与Java对象之间的双向转换,没有任何对环境、上下文的依赖;转换是一次性的动作,也没有需要使用IOC容器对自己或其他组件进行依赖注入的需求,因此,这里就把JsonConverter 定位为工具类,提供静态转换方法即可。
由于是双向转换,因此逐个方向进行分析和设计。
8.3.2 JSON->Java
JSON 到Java的转换,实现的功能是输入JSON文本串,转换为目标Java类的对象。因此,接口函数定义为:
/**
* 将Json 串转换为Java对象
* @param jsonStr 待转换的Json串,可以是内置类型、数组或者对象,也可以是上述三种的任意组合
* @param cls 目标Java对象的类
* @return 返回转换后的Java对象,可能是内置类型、数组、集合类型或者对象
* @exception 如果转换过程出现异常,统一抛出GeneralException 异常
*/
public static <T> T json2Obj(String jsonStr, Class<T> cls);
另外,考虑在某些情况下,不会提供Class对象,而是提供类名,因此再增加一个重载的函数:
/**
* 将Json 串转换为Java对象
* @param jsonStr 待转换的Json串,可以是内置类型、数组或者对象,也可以是上述三种的任意组合
* @param className 目标Java对象的类型名
* @return 返回转换后的Java对象,可能是内置类型、数组、集合类型或者对象
* @exception 如果转换过程出现异常,统一抛出GeneralException 异常
*/
public static Object json2Obj(String jsonStr, String className);
8.3.3 Java->JSON
Java 到JSON的转换,实现的功能是将Java对象,转换为JSON格式的字符串。因此,接口函数定义为:
/**
* 将Java对象转换为JSON字符串
* @param obj 待转换的Java对象
* @return 返回转换后的JSON字符串
*/
public static String obj2Json(Object obj);
8.3.4 接口汇总
综上,JsonConverter 转换器的接口,定义如下:
public class JsonConverter {
public static Object json2Obj(String jsonStr, String className);
public static <T> T json2Obj(String jsonStr, Class<T> cls);
public static String obj2Json(Object obj);
}