【问题标题】:Unparsable Date in Android Volley JsonArrayRequestAndroid Volley JsonArrayRequest 中无法解析的日期
【发布时间】:2014-11-07 16:24:09
【问题描述】:

我正在向 WCF Windows 服务请求一个对象数组,这些对象包含 DateTime 类型。当我的 Android 应用程序尝试从 JSONObject 消息中的对象读取数据时,如下所示:

Windows 日志:

11/6/2014 1:42:00 PM

Eclipse 日志

Unparseable date: "/Date(1415205000000-0200)/" (at offset 0)

Android 请求方法

private void GetEventos(String url)
{
    showProgressDialog();
    JsonArrayRequest req = new 
            JsonArrayRequest(url, new Response.Listener<JSONArray>() {

                @Override
                public void onResponse(JSONArray response){
                    Log.d(TAG, String.valueOf(response.length()));


                    try
                    {                           
                        Evento evento;

                        for (int i = 0; i < response.length(); i++) 
                        {
                            JSONObject jsonobject = response.getJSONObject(i);                              

                            evento = new Evento();              
                            evento.setId(jsonobject.getInt("Id"));
                            evento.setNome(jsonobject.getString("Nome"));
                            evento.setIdMonitorado(jsonobject.getInt("IdMonitorado"));

                            //Test
                            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                            Date date = dt.parse(jsonobject.getString("DataHora"));
                            Log.d(TAG, "DATA: " + date);

                            //evento.setDataHora(DateTime.parse(jsonobject.getJSONObject("DataHora")));
                            evento.setDuracao(jsonobject.getInt("Duracao"));
                            evento.setLatitudeDoLocal(Float.parseFloat(jsonobject.getString("LatitudeDoLocal")));
                            evento.setLongitudeDoLocal(Float.parseFloat(jsonobject.getString("LongitudeDoLocal")));
                            evento.setReceberNotificacao(jsonobject.getBoolean("ReceberNotificacao"));
                            evento.setNomeCidade(jsonobject.getString("NomeCidade"));
                            evento.setNomeUF(jsonobject.getString("NomeUF"));

                            _dataSoruceEvento.add(evento);

                            Log.d(TAG, evento.getDataHora().toString());
                        }

                    }catch(Exception ex){
                        Log.d(TAG, ex.getMessage().isEmpty() ? "Exception Null" : ex.getMessage());
                    }

                    hideProgressDialog();

                    //DataBindMonitorados(_dataSourceMonitorados);

                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hideProgressDialog();
                }
            });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(req, tag_json_arry);
}

我在浏览器中执行请求时的结果

【问题讨论】:

  • 一旦你编码为 JSON,你就失去了原始对象的全部对象性:你得到的只是那个对象的字符串表示。它是日期时间对象还是源计算机上的任何类型都没有关系。现在它只是文本,你必须告诉 android 代码来解析文本的任何格式。

标签: android wcf datetime-format unparseable


【解决方案1】:

您正在获取 JSON 中的 /Date(1415205000000-0200)/ 值,并且您正在尝试将其解析为 "yyyy-MM-dd hh:mm:ss"

【讨论】:

  • JSONObject 中返回的值是未知格式,当我在浏览器中运行相同的请求时,我得到一个 XML 并且 Date 字段的值是:2014- 11-06T13:42:00 我不明白为什么它不是这种格式/日期(1415205000000-0200)/在 Json 对象中。
  • 给我web api url
  • 很遗憾,我无权提供网址。我编辑了我的问题并在浏览器上添加了我的请求结果的打印屏幕,请注意日期格式是正确的。
  • 相同的 url 可以通过添加一个标题键给你 json 响应.. 显示 json 响应.. 可能是 json 响应有错误
  • Json 响应:[{"Numero":null,"IdMonitorado":2,"Notificado":false,"IdCidade":1,"NomeUF":"ACRE","LatitudeDoLocal":- 1.994231E-6,"Duracao":233,"Ativo":true,"ReceberNotificacao":true,"IdUF":1,"NomeCidade":"ACRELÂNDIA","Logradouro":"Avenida Amazonas","DataHora": "\/Date(1415205000000-0200)\/","Raio":200,"Id":21,"Nome":"Evento","Bairro":null,"LongitudeDoLocal":-4.4247513E-6},
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 2013-04-21
  • 2018-11-07
  • 2020-02-20
  • 1970-01-01
相关资源
最近更新 更多