JSON `date(...)` 到 `java.Util.Date` 使用 `org.json`

Posted

技术标签:

【中文标题】JSON `date(...)` 到 `java.Util.Date` 使用 `org.json`【英文标题】:JSON `date(...)` to `java.Util.Date` using `org.json` 【发布时间】:2011-01-12 19:29:46 【问题描述】:

我正在学习 Java 并编写一个使用服务器传递的 JSON 对象的 android 应用程序。

除了日期之外,我都可以正常工作。

我拿回了其中一个

'SomeKey':'\/Date(1263798000000)\/'

我正在使用org.json.JSONObject

如何将SomeKey 转换为java.Util.Date

【问题讨论】:

【参考方案1】:

这可能会有所帮助:

public static Date JsonDateToDate(String jsonDate)

    //  "/Date(1321867151710)/"
    int idx1 = jsonDate.indexOf("(");
    int idx2 = jsonDate.indexOf(")");
    String s = jsonDate.substring(idx1+1, idx2);
    long l = Long.valueOf(s);
    return new Date(l);

【讨论】:

【参考方案2】:

日期格式在 JSON 中不是标准的,因此您需要选择“通过”的方式。我认为您看到的值是以毫秒为单位的。

在 Java 中:

System.out.println (new Date(1263798000000L));
// prints: Mon Jan 18 09:00:00 IST 2010

当然,这是在我的时区,但无论如何它是一个相当近的日期。

来自 Date 构造函数的 javadoc:

参数: date - 自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

链接到这里的文档 -> http://java.sun.com/javase/6/docs/api/java/util/Date.html#Date%28long%29

【讨论】:

我也是 ava 新手,如何做正则表达式来获取值? 您不必使用正则表达式,您可以使用 String 方法来获取子字符串。查看文档。【参考方案3】:

正如 Yoni 已经提到的,JSON 没有定义日期是什么,或者如何序列化日期。看看你发布的 JSON sn-p,好像有人觉得有点太有创意了,像这样序列化一个日期。

这里要注意的重要一点是:对于任何 JSON 解析器,这只是一个字符串。 “日期(12345)”部分没有意义。您必须自己将其解析为 java.util.Date,在这种情况下,这意味着剥离任何不是数字的内容,并使用数字(UNIX 时间)来实例化 java.util.Date

仅作记录。使用 JSON 传递日期的典型方法是

'timestamp':1265231402

更有可能

'timestamp':'Wed, 03 Feb 2010 22:10:38 +0100'

后一个示例是使用标准 RFC-2822 格式的当前时间戳(正如我正在写的那样),可以使用 Java 的日期实用程序轻松解析。查看SimpleDateFormat 了解如何在 Java 中解析日期。

【讨论】:

这就是.NET DateTime 对象使用 JsonSerialiser 序列化的方式。【参考方案4】:
    public String FormartDate(String date) 
        Calendar calendar = Calendar.getInstance();
        String datereip = date.replace("/Date(", "").replace(")/", "");
        Long timeInMillis = Long.valueOf(datereip);
        calendar.setTimeInMillis(timeInMillis);

        String DateFmtI;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
        DateFmtI = simpleDateFormat.format(calendar.getTime());
        return DateFmtI;
    

【讨论】:

以上是关于JSON `date(...)` 到 `java.Util.Date` 使用 `org.json`的主要内容,如果未能解决你的问题,请参考以下文章

java中Date转换成JSON出错如何解决?

如何在 Json 中发送 java.util.Date?

将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型

[SprigMVC/SpringBoot] JSON序列化专题之日期序列化问题:接口报Jackson框架错误“InvalidDefinitionException: Java 8 date/time

请问怎样将有java.sql.Date属性的Bean转换成json字符串,再把json字符串转换回Bean请大侠指教!!!

jsonobject 怎么封装java中Date类型的数据