2012-02-11 4 views
0

저는 전에 stackoverflow에 대한 예제를 많이 읽었지 만 지금까지는 행운이 없었습니다. 내가 뭘하려고하는지 안드로이드에서 사용하기 위해 PHP/MySQL에서 돌아오고있는 json 배열을 구문 분석합니다. 난 그냥 "이름"을 추출하고 텍스트 뷰에 보내려고Android json 파싱이 예상 결과를 산출하지 않습니다.

[{"username":"lawn edge","distance":"0.00766418723166294"},{"username":"bbq","distance":"0.00876051437108357"},{"username":"Tablet","distance":"0.0140815866739065"}] 

: 내 코드는 내가 변환 후 다음과 같습니다 문자열로 JSON 변환 할 수있는 지점까지 작동합니다. 대부분의 예제는 비어있는 textview를 만들거나 위의 것처럼 전체 json 문자열을 덤프합니다. 가장 가까운 코드는 아래 코드를 사용하는 것입니다.

private void returnJson() { 
    // TODO Auto-generated method stub 

    try { 

     httpPostproximity = new HttpPost(
       "http://vtolblog.com/finddistance.php"); 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 

     nameValuePairs.add(new BasicNameValuePair("lat", lat)); 
     nameValuePairs.add(new BasicNameValuePair("lng", lng)); 
     nameValuePairs.add(new BasicNameValuePair("username", check)); 
     httpPostproximity 
       .setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpclient.execute(httpPostproximity); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 

    } catch (Exception e) { 
     playerlist.setText("error3"); 
    } 

    try { 

     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\r\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
     result.trim(); 
    } catch (Exception e) { 
     playerlist.setText("error2"); 
    } 
    try { 
     JSONObject json_data = new JSONObject(result); 
     JSONArray jArreglo = new JSONArray(result); 
     for (int i = 0; i < jArreglo.length(); i++) { 
      json_data = jArreglo.getJSONObject(i); 
      Log.i("log_tag", "Player: " + json_data.getString("username")); 
      // Get an output to the screen 
      jsonplayers += "\n\t" + jArreglo.getJSONObject(i); 
     } 

    } catch (JSONException e) { 
     Log.e("log_tag", "Error parsing data " + e.toString()); 
     playerlist.setText("Error parsing json"); 
    } 

    playerlist.setText(jsonplayers); 

    return; 

    // end of returnJson() 
} 

playerlist.setText (result); 그 시점까지 코드가 괜찮다고 가정하므로 위의 참조 된 json 배열을 표시 할 것입니까? 나는 벗어 났습니까? 나를 도울 수있는 다른 것이 필요한 경우 알려 주시고 미리 감사드립니다!

답변

0

난 당신이 줄에 예외를 받고 있다고 생각 : 결과가 JSONArray하지 된 JSONObject 때문에,이 라인을 주석 시도

JSONObject json_data = new JSONObject(result); 

.

+0

내가 주석으로 작성하면 빈 텍스트 뷰로 끝납니다. 아마 내가 겪고있는 모든 문제는 json 객체를 찾고 그것을 배열처럼 다루지 않는 코드를 계속 적용하려고하는 것입니까? – user1203283

관련 문제