2016-03-25 2 views
0

Я пытаюсь сортировать оценки, поступающие из JSONArray и выводя только топ 10. Вот мой код.Android - org.json.simple.JSONObject нельзя отнести к org.json.JSONObject

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

Я хотел разобрать sortedJsonArray в JSONObject, поэтому я использовал org.json.simple.JSONObject, но он говорит, что не может быть приведен к JSONObject. Я попытался с помощью org.json.simple.JSONObject тип данных для OBJ но я получил эту ошибку

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

Я извлечения данных с веб-сервера

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

Я понял, что могу просто разобрать JSONArray на строку, используя (String), а не использовать JSONParse. -____-

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

pls post json here –

+0

Попробуйте этот JSONObject obj = (JSONObject) parser.parse (sortedJsonArray.get (i)); –

+0

Khizar Hayat Я пробовал это, он говорит, что sortedJsonArray - это Object, а JSONParser принимает String. – camille

ответ

0

Попробуйте для синтаксического анализа:

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

вы используете JSONObject библиотеки, которая использует по умолчанию JSONObject и делает некоторые манипуляции с ним. Вы используете JSONObject этой библиотеки из пакета simple.Jsonobject, и вы пытаетесь сравнить его с json.Jsonobject по умолчанию. Попробуй посмотреть, что именно ты делаешь, чтобы вызвать это. Это поможет вам не только в этом случае, но и в будущем.

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