2016-04-06 8 views
0

我想要實現的JSONObject但收到錯誤,當我不喜歡下面的代碼錯誤是..如何調試「ModelClass無法映射到一個JSON對象。也許它沒有被標註了@JsonObject?」

04-06 14:26:55.436 32618-460/com.example.muhammad.try1 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
Process: com.example.muhammad.try1, PID: 32618 
java.lang.RuntimeException: An error occured while executing doInBackground() 
    at android.os.AsyncTask$3.done(AsyncTask.java:300) 
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
    at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
    Caused by: com.bluelinelabs.logansquare.NoSuchMapperException: Class com.example.muhammad.try1.ModelClass could not be mapped to a JSON object. Perhaps it hasn't been annotated with @JsonObject? 
    at com.bluelinelabs.logansquare.LoganSquare.mapperFor(LoganSquare.java:304) 
    at com.bluelinelabs.logansquare.LoganSquare.parse(LoganSquare.java:79) 
    at com.example.muhammad.try1.MainActivity$JSONAsyncTask.doInBackground(MainActivity.java:298) 
    at com.example.muhammad.try1.MainActivity$JSONAsyncTask.doInBackground(MainActivity.java:253) 
    at android.os.AsyncTask$2.call(AsyncTask.java:288) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
    at java.lang.Thread.run(Thread.java:818)  

,並在此行的錯誤點,

ModelClass s = LoganSquare.parse(jsonarray.getJSONObject(i).toString(), ModelClass.class); 

我加入這個依賴

compile 'com.bluelinelabs:logansquare:1.3.6' 

請幫助我如何解決此錯誤

@JsonObject 
public class ModelClass { 

@JsonField(name = "longi") 
public String longitudeServer; 

@JsonField(name = "lati") 
public String latitudeServer; 

@JsonField(name = "uniqueid") 
public String uniqueidSserver; 

public ModelClass(){ 
} 
} 

這裏是我的DoInBacground功能在那裏我得到錯誤

@Override 
    protected Boolean doInBackground(String... urls) { 
     try { 

      //------------------>> 

      HttpGet httpGet = new HttpGet(urls[0]); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = httpclient.execute(httpGet); 
      int status = response.getStatusLine().getStatusCode(); 

      if (status == 200) { 
       HttpEntity entity = response.getEntity(); 
       String data = EntityUtils.toString(entity); 


       JSONArray jsonarray = new JSONArray(data); 

       latLngList.clear(); 

       for (int i = 0; i < jsonarray.length(); i++) { 
        ModelClass s = LoganSquare.parse(jsonarray.getJSONObject(i).toString(), ModelClass.class); 

        LatLng latLng = new LatLng(Double.parseDouble(s.getLatitude()), Double.parseDouble(s.getLongitude())); // Use your server's methods 
        latLngList.add(latLng); 

       } 


       return true; 

      } 

      //------------------>> 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return false; 


    } 
+0

你能分享JSON文件? –

+0

[{「longi」:「74.3229089」,「lati」:「31.5003855」,「uniqueid」:「25c04146a064bce9」}] – Ahmad

+0

這些是我的API的 http://103.8.113.7/hajjapi/api/GPSLocator/GetLocations http://103.8.113.7/hajjapi/api/GPSLocator/AddLocation?longi=longi11&lati=lati11&uniqueid=uniqueid11 – Ahmad

回答

1

其他方法:

for (int i = 0; i < jsonarray.length(); i++) { 
    JSONObject jsonModel = jsonarray.getJSONObject(i) 
    String longi = jsonModel.getString("longi"); 
    String lati = jsonModel.getString("lati"); 
    String uniqueid = jsonModel.getString("uniqueid"); 

    LatLng latLng = new LatLng(Double.parseDouble(lati), Double.parseDouble(longi)); 
    latLngList.add(latLng); 

} 

編輯

裏面build.gradle在dependncies添加compile 'com.bluelinelabs:logansquare-compiler:1.3.6'這樣的:

dependencies { 
.... 
compile 'com.bluelinelabs:logansquare-compiler:1.3.6' 
.... 
} 
+0

錯誤顯示 無法解決方法「pars(ORG.JSON .......) – Ahmad

+0

你需要嗎?使用LoganSquare或與其他解決方案,你是幸福? –

+0

是請在我喜歡@SerializedName感謝先生另一種解決辦法,如果你幫我.. – Ahmad