特殊なタイプのjsonに対する処理

1743 ワード

以前はjsonの特殊な処理が少なく、何を組み立てる必要があったのか、今はbeanからターゲットフォーマットに変換する必要があります.
例えばTimestampはnet.を用いる.sf.json.JSONObjectでは、Timestampのgetter setterにシーケンス化されていますが、実は私たちは彼を簡単な時間フィールドにするだけです.        
JSONObject net.sf.json.JSONObject.fromObject(Object object, JsonConfig jsonConfig)
この方法はずっとそこに置いていて役に立たないので、今回は役に立つはずです.
時間タイプへの変換の作成
public class JSONTimeStampProcessor implements JsonValueProcessor {

	/* (non-Javadoc)
	 * @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java.lang.Object, net.sf.json.JsonConfig)
	 */
	@Override
	public Object processArrayValue(Object obj, JsonConfig jsonconfig) {
		// TODO Auto-generated method stub

		return obj;
	}

	/*       (non-Javadoc)
	 * @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java.lang.String, java.lang.Object, net.sf.json.JsonConfig)
	 */
	@Override
	public Object processObjectValue(String s, Object obj, JsonConfig jsonconfig) {
		// TODO Auto-generated method stub
		if (obj instanceof Timestamp) {
			try {
				Timestamp timeStamp = (Timestamp) obj;
				DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String rtnType = sdf.format(timeStamp);
				return rtnType;
			} catch (Exception e) {
			}
		}

		return obj;
	}
}

プロセスを登録してbeanをシーケンス化する
     
JsonConfig jsonConfig=new JsonConfig();
		JSONTimeStampProcessor timeStamp=new JSONTimeStampProcessor();
		jsonConfig.registerJsonValueProcessor(Timestamp.class, timeStamp);
		return JSONObject.fromObject(bean, jsonConfig).toString();