2014-11-07 5 views
1

Я прошу WCF Windows Service создать массив объектов, и эти объекты содержат тип DateTime. Когда мой Android приложение пытается прочитать данные из объекта, который находится в сообщении JSONObject ниже:Unparsable Date в Android Volley JsonArrayRequest

Вход в Windows:

11/6/2014 1:42:00 PM 

Затмение Вход

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); 
} 

Результаты, когда я выполняю запрос в браузере

View Browser result

+0

После кодирования в формате JSON, вы теряете всю объектность любого оригинала: все, что вы получаете, - это строковое представление этого объекта. Не имеет значения, был ли это объект datetime или какой-либо его тип на исходной машине. Теперь это всего лишь текст, и вам нужно будет указать код Android для разбора любого формата, в котором находится текст. –

ответ

0

вы получаешь /Date(1415205000000-0200)/ значение в формате JSON, и вы пытаетесь разобрать его как "yyyy-MM-dd hh:mm:ss"

+0

Значение, возвращаемое в JSONObject, находится в неизвестном формате, когда я запускаю этот же запрос в своем браузере, я получить XML и значение поля «Дата»: 2014-11-06T13: 42: 00 Не понимаю, почему этого нет в этом формате/Дата (1415205000000-0200)/в объекте Json. –

+0

дайте мне сайт api url – Aun

+0

К сожалению, у меня нет разрешения на предоставление URL-адреса. Я отредактировал свой вопрос и добавил экран печати результата моего запроса в браузере, обратите внимание, что формат даты верен. –

 Смежные вопросы

  • Нет связанных вопросов^_^