fastJson 对Timestamp 序列化和反序列化问题

发布于 2021-12-03 11:26:12 字数 868 浏览 864 评论 10

fastJson 对Timestamp 序列化和反序列化问题

Object[] objects = new Object[]{new Timestamp(System.currentTimeMillis())};

如上  objects 数组里 有Timestamp类型对象,使用 JSON toString 后 默认是时间戳数字。

可以通过 SerializerFeature 进行序列号处理。 

反序列话的时候 不知道 怎么处理 才能返回new Object[]{new Timestamp(System.currentTimeMillis())};

 

Object[] objects = new Object[]{new Timestamp(System.currentTimeMillis())};
String result = JSON.toJSONString(objects, SerializerFeature.UseISO8601DateFormat);
Object[] objects1 = JSON.parseObject(result, Object[].class);
JSON.parseObject(result, Object[].class, Feature.AllowISO8601DateFormat);
Timestamp timestamp = (Timestamp) objects1[0];
System.err.println(timestamp.getTime());

java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Timestamp

 

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

拍不死你 2021-12-05 06:55:25

这个 object[] 里可能会有 好多种类型的数据 比如 String int date

猫九 2021-12-05 06:50:08

回复
那你存储传输的时候,多加一个字段,存储Object[]里面存储的具体类型,这样要反序列化的时候,不就行了么

滥情空心 2021-12-05 06:47:24

回复
这样效率上会降低不少吧,貌似也没有办法 把object[] 还原回去了 ,我想的是可能自定义序列号接口可以,但不知道咋做

坐在坟头思考人生 2021-12-05 06:39:24

JSON.parseObject(result, Timestamp[].class);

飘过的浮云 2021-12-05 05:23:50

不想 手动处理,让 json自动完成序列号,或自己编写序列号接口.

墨洒年华 2021-12-05 03:58:59
Timestamp[] objects = new Timestamp[]{new Timestamp(System.currentTimeMillis())};
试试看
旧城烟雨 2021-12-05 02:05:18

不想 手动处理,让 json自动完成序列号,或自己编写序列号接口

平生欢 2021-12-04 21:08:04
Timestamp timestamp = new Timestamp(Long.valueOf(objects1[0]));

这样呢?

执手闯天涯 2021-12-04 04:18:07

也就是说数字变字符串了?

离去的眼神 2021-12-03 15:45:34

效率降低很多?不能还原回去?

public class JSON转换 {

	public static void main(String[] args) throws Exception {
		Object[] objects = new Object[]{new Timestamp(System.currentTimeMillis())};
		String s = toJSONString(objects);
		Object[] newObjects = parseObjects(s);
		System.out.println(((Timestamp)newObjects[0]).getTime());
	}
	
	static String toJSONString(Object[] objects) {
		StringBuilder builder = new StringBuilder();
		String arrayClassName = "[L" + objects[0].getClass().getName() + ";";
		builder.append(arrayClassName).append("n");
		builder.append(JSON.toJSONString(objects));
		return builder.toString();
	}
	
	static Object[] parseObjects(String s) throws Exception {
		BufferedReader reader = new BufferedReader(new StringReader(s));
		String className = reader.readLine();
		Class<?> clazz = Class.forName(className);
		return (Object[]) JSON.parseObject(s.substring(className.length() + 1), clazz);
	}
	
}

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文