2012-03-08 75 views
1

我有這樣的代碼:Web服務,JSON和Android。結果WS不正常工作

Carrera userRecived = null; 
    HttpClient httpclient; 
    HttpGet httpget; 
    HttpResponse response; 
    HttpEntity entity; 
     /*Call Json service and Unserialize with Gson into the class*/ 
    try{ 
     httpclient = new DefaultHttpClient(); 

     httpget = new HttpGet(Url); 

     response = httpclient.execute(httpget); 

     entity = response.getEntity(); 

      String result= EntityUtils.toString(entity);   

      Gson gson = new Gson(); 
      userRecived = gson.fromJson(result, Carrera.class); 


    }catch(Exception error){throw new Error("Error en el get -- "+error.toString());} 

我的問題是下一個錯誤: 03-08 19:07:42.899:E/AndroidRuntime(959):java.lang中。錯誤:錯誤EN EL getcom.google.gson.JsonParseException:期待陣列,但找到的對象:[email protected]

我從PHP Web服務等待結果,結果可能在下一個JSON:

[{"Codigo":"1","Denominacion":"Popular de Xativa","Imagen":"1231313","Poblacion":"Xativa","Lugar":"Valencia","Fecha":"11 de Noviembre de 2012","Hora":"17:00","Descripcion":"para probar","Reglamento":"http:\/\/www.google.es","Kilometros":"21"}] 

我有一個卡雷拉在哪裏存儲這些信息。

我希望有人幫助我。 謝謝。

+0

請把日誌結果,並顯示是正確的或不... – 2012-03-08 19:51:05

回答

1

變化:

userRecived = gson.fromJson(result, Carrera.class); 

到:

List<Carrera> userRecived = (List<Carrera>) gson.fromJson(result, new TypeToken<List<Carrera>>(){}.getType()); 
+0

我在等待Web服務的一個結果。是一個10個屬性代表一個對象,沒有列表。可能是JSON的結果是錯誤的? – Jorgechu 2012-03-08 19:56:37

+0

這取決於你的服務器返回的內容。我認爲你的服務器正在返回json數組字符串 – waqaslam 2012-03-08 20:15:23

+0

我的服務器返回這個http://www.elblogdejorgechu.com/WSprueba.php。我想從web服務中獲取atributes(我從查詢數據庫獲得這個結果,是一個結果(行)代表一個對象),以便用android創建一個對象。 – Jorgechu 2012-03-08 20:58:38

2

你正在得到一個數組,而不是一個對象。所以,你必須做這樣的事情:

Gson gson = new Gson(); 

Type collectionType = new TypeToken<Collection<Carrera>>(){}.getType(); 
List<Carrera> listOfObj= gson.fromJson(result, collectionType); 
+0

我正在等待Web Service的一個結果。是一個10個屬性代表一個對象,沒有列表。可能是JSON的結果是錯誤的? – Jorgechu 2012-03-08 19:55:11