Я пытаюсь отсортировать оценки, поступающие из JSONArray, и вывести только 10 лучших. Вот мой код.
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();
}
ИЗМЕНИТЬ
Я понял, что могу просто разобрать JSONArray в строку с помощью (String) и не использовать JSONParse. -____-
jObject = new JSONObject((String) sortedJsonArray.get(i));