为了账号安全,请及时绑定邮箱和手机立即绑定

求指教,该如何格式化JSON日期类型数据?

/ 猿问

求指教,该如何格式化JSON日期类型数据?

慕工程0101907 2019-11-26 10:06:20

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


查看完整描述

3 回答

?
慕圣8478803

 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;
  }



查看完整回答
反对 回复 2019-12-01
?
慕神8447489

1、Number 在JavaScript中的双精度浮点格式
2、String 双引号的反斜杠转义的Unicode
3、Boolean true 或 false
4、Array 值的有序序列
5、Value 它可以是一个字符串,一个数字,真的还是假(true/false),空(null )等
6、Object 无序集合键值对
7、Whitespace 可以使用任何一对中的令牌
8、null empty



查看完整回答
反对 回复 2019-12-01
?
一只斗牛犬

数据库中存日期一般都是按时间戳来存比较好一点,只是在把它从数据库中取出来时用date()函数格式化一下即可。 date()函数的时间格式有 很多种,你可以看一下php函数手册,看你需要哪种日期格式,然后再转化。当然也可以先转化,再存入数据库,看你喜欢哪种方式。

如果你想直接存日期格式的话,可以在 上次的代码 中添加:

12345678$arr json_decode($result, true); foreach($arr[data] as $key=>$val){    $arr[data][$key]['date'] = date("Y-m-d H:i:s",$val['date']);} print_r($arr);
1就转化为日期格式了,然后就可以按照你的方式存库了。


查看完整回答
反对 回复 2019-12-01

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信