猿问

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

我有一个看起来像这样的对象:


{

    "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,因为我需要来自服务器的时间,以便对每个人都通用。


慕桂英546537
浏览 398回答 3
3回答

收到一只叮咚

如果可能,让服务器以更好的格式(如ISO-8601)返回日期,因为这将避免歧义并导致更小的 JSON 有效负载。如果这是不可能的,您将不得不决定使用 JSON 的哪些部分,或者time不同的值,如hours,&nbsp;minutes, ... 通过手动挑选这些部分,您可以Date使用其构造函数之一手动构建对象或通过java.util.Calendar对象(因为java.util.DateJava 8 中不推荐使用中的许多构造函数)。

DIEA

这就是解决它的方法。感谢 Ayush Gupta 的评论。StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onResponse(String response) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject jsonObject = new JSONObject(response);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; timestamp = jsonObject.getLong("time");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastLoadedDate = new Date(timestamp);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (JSONException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Handle the exception&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答