泛型類型解析
public class TypeReference<T> {
private final Type type;
protected TypeReference(){
Type superClass = getClass().getGenericSuperclass();
type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}
public Type getType() {
return type;
}
public final static Type LIST_STRING = new TypeReference<List<String>>() {}.getType();
}
getGenericSuperclass
public Type getGenericSuperclass()返回表示此 Class 所表示的實體(類、接口、基本類型或 void)的直接超類的 Type。
如果超類是參數化類型,則返回的 Type 對象必須準確反映源代碼中所使用的實際類型參數。如果以前未曾創建表示超類的參數化類型,則創建這個類型。有關參數化類型創建過程的語義,請參閱 ParameterizedType
聲明。如果此 Class 表示 Object 類、接口、基本類型或 void,則返回 null。如果此對象表示一個數組類,則返回表示 Object 類的 Class 對象。
返回: 此對象所表示的類的超類 拋出:
GenericSignatureFormatError
- 如果常規類簽名不符合 Java Virtual Machine Specification, 3rd edition 規定的格式
TypeNotPresentException
- 如果常規超類引用不存在的類型聲明
MalformedParameterizedTypeException
- 如果常規超類引用的參數化類型由於某種原因無法實例化
從以下版本開始:
1.5
getActualTypeArguments
Type[] getActualTypeArguments()
注意,在某些情況下,返回的數組爲空。如果此類型表示嵌套在參數化類型中的非參數化類型,則會發生這種情況。
TypeNotPresentException
- 如果任何實際類型參數引用不存在的類型聲明MalformedParameterizedTypeException
- 如果任何實際類型參數引用參數化類型,該類型出於某種原因無法被實例化java.util.Map<java.lang.String, com.xxx.commons.json.test.JsonTest$InnerObj>
關於類型轉換
JSON.toJSONString(object, SerializerFeature.WriteMapNullValue)
關於Feature
- SerializerFeature.UseSingleQuotes,//支持單引號
- SerializerFeature.WriteDateUseDateFormat,//日期格式化
- SerializerFeature.WriteMapNullValue, // 輸出空置字段
- SerializerFeature.WriteNullListAsEmpty, // list字段如果爲null,輸出爲[],而不是null
- SerializerFeature.WriteNullNumberAsZero, // 數值字段如果爲null,輸出爲0,而不是null
- SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果爲null,輸出爲false,而不是null
- SerializerFeature.WriteNullStringAsEmpty // 字符類型字段如果爲null,輸出爲"",而不是null
{"@type":"java.awt.Color","r":255,"g":0,"b":0,"alpha":255}
String text = ...; // {"@type":"java.awt.Color","r":255,"g":0,"b":0,"alpha":255}
Color color = (Color) JSON.parse(text);
String text = ...; // [{/* header */}, {/* body */}]
Type[] types = new Type[] {Header.class, Body.class};
List<Object> list = JSON.parseArray(text, types);
Header header = (Header) list.get(0);
Body body = (Body) list.get(1);
/**
* @author wenshao[[email protected]]
*/
public class JSONArray extends JSON implements List<Object>, Cloneable, RandomAccess, Serializable {
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> <!-- HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="features"> <array value-type="com.alibaba.fastjson.serializer.SerializerFeature"> <value>WriteDateUseDateFormat</value> <value>WriteMapNullValue</value> </array> </property> </bean> </list> </property> </bean>