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

在 Java 中将 JSON 对象转换为 util.Date

在 Java 中将 JSON 对象转换为 util.Date

慕桂英546537 2021-09-15 15:26:24
我有一个看起来像这样的对象:{    "date": 12,    "day": 3,    "hours": 12,    "minutes": 32,    "month": 8,    "seconds": 32,    "time": 1536755552909,    "timezoneOffset": 0,    "year": 118}我之前使用util.Date过生成日期,但现在我从 Node.js 服务器以上面的格式获取它。如何将其转换为Date类型?当我尝试做StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {        @Override        public void onResponse(String response) {            JsonParser jsonParser = new JsonParser();            JsonElement jsonElement = jsonParser.parse(response);            Gson gson = new Gson();            Date date = gson.fromJson(jsonElement,Date.class);            lastLoadedDate = date;            elapsedTime = 0;        }    }这只是失败,因为它不是字符串,节点服务器发送一个 JSON。如果我这样做new Response.Listener<Date>()是因为它是 JSON,而不是日期。像这样Date now = (Date) myJsonResponse将JSON 转换为 Date会导致 Android Studio 出错:无可争议的类型:无法将 JSONObject 转换为 Date编辑。我不能使用 util.Date,因为我需要来自服务器的时间,以便对每个人都通用。
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

如果可能,让服务器以更好的格式(如ISO-8601)返回日期,因为这将避免歧义并导致更小的 JSON 有效负载。

如果这是不可能的,您将不得不决定使用 JSON 的哪些部分,或者time不同的值,如hoursminutes, ... 通过手动挑选这些部分,您可以Date使用其构造函数之一手动构建对象或通过java.util.Calendar对象(因为java.util.DateJava 8 中不推荐使用中的许多构造函数)。


查看完整回答
反对 回复 2021-09-15
?
DIEA

TA贡献1820条经验 获得超2个赞

这就是解决它的方法。感谢 Ayush Gupta 的评论。


StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {

        @Override

        public void onResponse(String response) {


            try {


                JSONObject jsonObject = new JSONObject(response);


                timestamp = jsonObject.getLong("time");


                lastLoadedDate = new Date(timestamp);


            } catch (JSONException e) {

                //Handle the exception

            }


        }

    }


查看完整回答
反对 回复 2021-09-15
  • 3 回答
  • 0 关注
  • 397 浏览

添加回答

举报

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