如何格式化JSON日期类型数据

 我来答
匿名用户
推荐于2017-12-16
展开全部
  json-lib-2.2可以为对应的class注册解析类,记住一定要2.2,2.1有同步问题。切记切记。

  写一个DateJsonValueProcessor.java

  package anni.core.web.json;

  import java.text.DateFormat;
  import java.text.SimpleDateFormat;

  import java.util.Date;

  import net.sf.json.JSONObject;
  import net.sf.json.JsonConfig;
  import net.sf.json.processors.JsonValueProcessor;

  /**
  * @author Lingo
  * @since 2007-08-02
  */
  public class DateJsonValueProcessor implements JsonValueProcessor {
  public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
  private DateFormat dateFormat;

  /**
  * 构造方法.
  *
  * @param datePattern 日期格式
  */
  public DateJsonValueProcessor(String datePattern) {
  try {
  dateFormat = new SimpleDateFormat(datePattern);
  } catch (Exception ex) {
  dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
  }
  }

  public Object processArrayValue(Object value, JsonConfig jsonConfig) {
  return process(value);
  }

  public Object processObjectValue(String key, Object value,
  JsonConfig jsonConfig) {
  return process(value);
  }

  private Object process(Object value) {
  return dateFormat.format((Date) value);
  }
  }
  然后在bean -> json的时候

  /**
  * write.
  *
  * @param bean obj
  * @param writer 输出流
  * @param excludes 不转换的属性数组
  * @param datePattern date到string转换的模式
  * @throws Exception 写入数据可能出现异常
  */
  public static void write(Object bean, Writer writer,
  String[] excludes, String datePattern) throws Exception {
  JsonConfig jsonConfig = configJson(excludes, datePattern);

  JSON json = JSONSerializer.toJSON(bean, jsonConfig);

  json.write(writer);
  }

  /**
  * 配置json-lib需要的excludes和datePattern.
  *
  * @param excludes 不需要转换的属性数组
  * @param datePattern 日期转换模式
  * @return JsonConfig 根据excludes和dataPattern生成的jsonConfig,用于write
  */
  public static JsonConfig configJson(String[] excludes,
  String datePattern) {
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setExcludes(excludes);
  jsonConfig.setIgnoreDefaultExcludes(false);
  jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
  jsonConfig.registerJsonValueProcessor(Date.class,
  new DateJsonValueProcessor(datePattern));

  return jsonConfig;
  }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式