2016-03-25 4 views
0

Ich versuche, Scores zu sortieren, die von einem JSONArray kommen, und gebe nur die Top 10 aus. Hier ist mein Code.Android - org.json.simple.JSONObject kann nicht in org.json.JSONObject umgewandelt werden

try { 
JSONArray jArray = new JSONArray(result); 


List<String> jsonValues = new ArrayList<String>(); 
for (int i = 0; i < jArray.length(); i++) 
    jsonValues.add(jArray.getString(i)); 
Collections.sort(jsonValues); 
JSONArray sortedJsonArray = new JSONArray(jsonValues); 


for(int i=0;i<10;i++){ 
    JSONObject jObject; 
    try { 
     JSONParser parser = new JSONParser(); 
     JSONObject obj = (JSONObject) parser.parse((String) sortedJsonArray.get(i)); 

     Score score =new Score(); 
     score.setId(obj.getInt("Id")); 
     score.setPlayerId(obj.getInt("PlayerId")); 
     score.setHiScore(obj.getInt("HiScore")); 
     tempList.add(score); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Ich wollte die sortedJsonArray in JSONObject analysieren, das ist, warum ich org.json.simple.JSONObject verwendet, aber es sagt, dass es nicht zu JSONObject gegossen werden kann. Ich habe versucht, org.json.simple.JSONObject Datentyp für obj aber ich habe diesen Fehler

The method getInt(String) is undefined for the type JSONObject 

Ich Abrufen von Daten von einem Webserver

List<Score> tempList = new ArrayList<Score>(); 
HttpClient client = new DefaultHttpClient(); 

HttpGet getRequest = new HttpGet(EndPoint+"/Scores"); 
String result=""; 
HttpResponse response; 
try { 
    response = client.execute(getRequest); 
    HttpEntity entity = response.getEntity(); 
     if(entity!=null){ 
     InputStream instream = entity.getContent(); 
     StreamConverter sc= new StreamConverter(); 
     result= StreamConverter.convertStreamToString(instream); 
     instream.close(); 
    } 

EDIT

mit

Ich erkannte, dass ich einfach JSONArray mit (String) zu string analysieren und nicht JSONParse verwenden konnte. -____-

jObject = new JSONObject((String) sortedJsonArray.get(i)); 
+0

pls post json hier –

+0

Probieren Sie dieses JSONObject obj = (JSONObject) parser.parse (sortedJsonArray.get (i)); –

+0

Khizar Hayat Ich habe das versucht, es sagt, dass sortedJsonArray ein Objekt ist, und JSONParser akzeptiert String. – camille

Antwort

0

das Versuchen für die Analyse:

try { 
      JSONObject jsonObject = new JSONObject(response); 
      if (jsonObject.getString(KEY_SUCCESS).equals("true")) { 

       preDefineAlertList = new ArrayList<HashMap<String, String>>(); 
       JSONArray jsonArray = jsonObject.getJSONArray("Data"); 

       for (int i = 0; i < jsonArray.length(); i++) { 

        HashMap<String, String> mapNew = new HashMap<String, String>(); 
        JSONObject obj = jsonArray.getJSONObject(i); 

       // Log.d("obj", obj.toString()); 


        alert_message = obj.getString(Constants.Params.MESSAGE); 
        id = obj.getString(Constants.Params.ID); 



        mapNew.put("message", message); 
        mapNew.put("id",id); 


        // Log.d("mapNew", mapNew.toString()); 
        preDefinetList.add(mapNew); 

       } 

      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
0

Sie die JSONObject einer Bibliothek verwenden, die Standard JSONObject verwendet und hat einige Manipulationen zu. Sie verwenden das JSONObject dieser Bibliothek aus dem Paket von simple.Jsonobject, und Sie versuchen, es mit dem Standard json.Jsonobject zu vergleichen. Probieren Sie, was genau Sie tun, um es zu verursachen. Es wird Ihnen nicht nur in diesem Fall helfen, sondern auch in Zukunft.