解析ASP.NET MVC使用Java中的Jackson JSON库返回日期
发布时间:2020-12-16 07:17:16 所属栏目:asp.Net 来源:网络整理
导读:我使用Jackson JSON库在我的 Android应用程序中解析服务器中的JSON.但是,每当我收到DateTime时,解析请求都会失败,因为它采用以下格式: "/Date(1277931782420)/" 我知道我应该这样做: ObjectMapper om = new ObjectMapper();om.setDateFormat(new TicksSinc
我使用Jackson
JSON库在我的
Android应用程序中解析服务器中的JSON.但是,每当我收到DateTime时,解析请求都会失败,因为它采用以下格式:
"/Date(1277931782420)/" 我知道我应该这样做: ObjectMapper om = new ObjectMapper(); om.setDateFormat(new TicksSinceFormat()); 但是我根本不知道我是否可以使用SimpleDateFormat(我会使用什么格式的字符串?)或者我需要编写自己的DateFormat解析器.所以,如果有人可以帮助代码示例,我会非常感激. 编辑: 解决方法
事实证明这比我预期的要困难:
public class TicksSinceFormat extends DateFormat { @Override public StringBuffer format(Date date,StringBuffer buffer,FieldPosition field) { long millis = date.getTime(); return new StringBuffer("/Date(" + millis + ")/"); } @Override public Date parse(String string,ParsePosition position) { int start = string.indexOf("(") + 1; int end = string.indexOf(")"); String ms = string.substring(start,end); Date date = new Date(Long.parseLong(ms)); position.setIndex(string.length() - 1); // MUST SET THIS return date; } @Override public Object clone() { return new TicksSinceFormat(); // MUST SET THIS } } 使用类非常简单,只需: ObjectMapper om = new ObjectMapper(); om.setDateFormat(new TicksSinceFormat()) 我认为这可以编码得更好,我需要处理.NET Ticks VS Java ticks的差异 – 但是现在这样做了.如果某人有更好的解决方案或更深入地了解我将在稍后处理的问题 – 请随时发布,如果情况好转,我会将您的答案标记为正确. 编辑:正如我在question & answer中解释的那样,我已经切换到服务器上的ServiceStack.Text库,它返回不同的ISO8601格式.对于那种格式,我使用稍微不同的解析(因为Jackson在解析包含毫秒的ISO8601时遇到问题).当然,和我发布的其他代码一样 – 请告诉我你是否有更好的版本(请发布代码/编辑这篇文章,而不是诉诸于如何做的哲学修辞): @SuppressLint("SimpleDateFormat") public class JacksonSimpleDateFormat extends SimpleDateFormat { public JacksonSimpleDateFormat() { if (mParser == null) { mParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); mParser.setTimeZone(TimeZone.getTimeZone("UTC")); } } @Override public StringBuffer format(Date date,FieldPosition field) { return mParser.format(date,buffer,field); } private static SimpleDateFormat mParser; @Override public Date parse(String string,ParsePosition position) { String str = string.split(".")[0]; Date date = null; try { date = mParser.parse(str); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } position.setIndex(string.length() - 1); return date; } @Override public Object clone() { return new JacksonSimpleDateFormat(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Ajax.BeginForm和验证
- asp.net-mvc – 我可以在.NET 4.0下编译和运行MVC1.0应用程
- 认证 – 支持个人用户帐户和组织帐户在MVC5 / ASP.Net身份2
- .NET 3.5 / VS 2008上的ASP.NET Web Services的自定义HTTP基
- asp.net-web-api – ASP.NET Web API HTTP删除405方法不允许
- ASP.net喜欢WPF MVVM棱镜中的基于表单的身份验证
- asp.net-mvc – MVC 4从基本路由中删除“home”
- 使用.NET Core+Docker 开发微服务
- asp.net-mvc-3 – 在具有默认值的模型上注释属性
- asp.net core 实现支持多语言
推荐文章
站长推荐
- asp.net-mvc-4 – MVC4 RC脚本捆绑很慢
- 从Asp.Net 4项目进入引用的.Net 3.5程序集
- 什么用于ASP.NET的成员资格
- asp.net-mvc – IE9从URL中删除#part(适用于Fire
- asp.net – 从ItemDataBound事件中的转发器控件中
- .net – 强制ActionLinks呈现为小写
- asp.net-mvc – 来自父Razor布局的@Functions继承
- 什么是ASP.NET中的CRON作业? – C#
- asp.net-mvc – 在运行时ASP.NET捆绑和缩小有什么
- [ASP.NET MVC] 利用自定义的AuthenticationFilte
热点阅读