Android - org.json.simple.JSONObject无法强制转换为org.json.JSONObject

时间:2016-03-25 07:13:43

标签: java android arrays json jsonobject

我正在尝试对来自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();
    }

修改

我意识到我可以使用(String)解析JSONArray到字符串而不使用JSONParse。 -____-

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

2 个答案:

答案 0 :(得分: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();
        }

答案 1 :(得分:0)

您正在使用使用Default JSONObject的库的JSONObject并对其进行一些操作。 您正在使用simple.Jsonobject包中该库的JSONObject,并且您正在尝试将其与默认的json.Jsonobject进行比较。 试试看你到底在做什么导致它。它不仅可以帮助你,也可以帮助你。