当前位置:首页>开发>正文

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

2023-07-04 21:07:07 互联网 未知 开发

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

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

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-0  */
  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
  }

最新文章