2012-12-14 163 views
0

我顯示名稱,emial id,ph數據庫中的列表視圖在php中。類型org.json.JSONArray無法轉換爲JSONObject

enter code here 

    public class MainActivity extends ListActivity 
    { 
// url to make request 
private static String url = "http://10.0.2.2/programs/get_data.php"; 
private static final String TAG_CONTACTS = "contacts"; 
private static final String TAG_ID = "id"; 
private static final String TAG_NAME = "name"; 
private static final String TAG_phno = "phno"; 
    JSONArray contacts; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 

    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_main); 

    // Hashmap for ListView 
    ArrayList<HashMap<String, String>> contactList = ArrayList<HashMap<String,string();  
    // Creating JSON Parser instance 

    JSONParser jParser = new JSONParser(); 
    // getting JSON string from URL 
    JSONObject json = jParser.getJSONFromUrl(url); 
    try { 
    // Getting Array of Contacts 
    contacts = json.getJSONArray(TAG_CONTACTS); 
    // looping through All Contacts 
    for(int i = 0; i < contacts.length(); i++) 
    { 
    JSONObject c = contacts.getJSONObject(i); 
    String name = c.getString("name"); 
    String phno = c.getString("phno"); 
    String email = c.getString("id"); 
    System.out.println("hi"); 
    // creating new HashMap 
    HashMap<String, String> map = new HashMap<String, String>(); 
    map.put(TAG_NAME, name); 
    map.put(TAG_ID,email); 
    map.put(TAG_phno, phno); 
    // adding HashList to ArrayList 
    contactList.add(map); 
    } 
    }catch (JSONException e) { 
    e.printStackTrace(); 
    } 
    ListAdapter adapter = new SimpleAdapter(this, contactList, 
    R.layout.list_item, 
    new String[] { TAG_NAME, TAG_ID, TAG_phno }, new int[] { 
    R.id.name, R.id.email, R.id.phno }); 
    setListAdapter(adapter); 

    } 

    } 






public class JSONParser extends Activity 
    { 

static InputStream is; 
static JSONObject jObj; 
static String json = ""; 
    // constructor 
public JSONParser() 
{ 

} 

public JSONObject getJSONFromUrl(String url) 
{ 


// Making HTTP request 
try { 
DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(url); 
    HttpResponse httpResponse = httpClient.execute(httpPost); 
HttpEntity httpEntity = httpResponse.getEntity(); 
is = httpEntity.getContent(); 
} catch (UnsupportedEncodingException e) { 
e.printStackTrace(); 
} catch (ClientProtocolException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
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 + "\n"); 
} 
is.close(); 
json = sb.toString(); 
} catch (Exception e) { 
Log.e("Buffer Error", "Error converting result " + e.toString()); 
} 

// try parse the string to a JSON object 
    try { 
    jObj = new JSONObject(json); 
    } catch (JSONException e) 
    { 
Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // return JSON String 
    return jObj; 

    } 
    } 

我正在誤差作爲

11-21 22:44:00.306:E/JSON解析器(17671):錯誤解析數據org.json.JSONException:值[{ 「ID」:」 「名稱」:「Chaitra D」},{「id」:「s.com」,「phno」:「1254」,「名稱」:「Shrivatsa K」 },{「id」:「m.com」,「phno」:「1456」,「name」:「Mahalaxmi B」},{「id」:「Sh.com」,「phno」:「1234」, 「名」: 「Sharadha」},{ 「ID」: 「shh.com」, 「PHNO」: 「1564」, 「名」: 「shrilatha」},{ 「ID」: 「n.com」,「PHNO 「:」97「,」name「:」namratha h「},{」id「:」shri.com「,」phno「:」167「,」name「:」Shrinivas D「},{」id「 「p.com」,「phno」:「987」,「name」:「PG sunita」}]類型org.json.JSONArray無法轉換爲JSONObject

請幫助我,謝謝

回答

0

你得到這個異常,因爲你沒有json對象,你有一個json數組的json對象。首先,將你的字符串解析爲一個json數組,然後遍歷數組來獲取每個對象。

0

我想從服務器的JSON是一個數組,所以你應該從該數組中獲得第一個JSONObject。 這就像:

public JSONArray getJSONFromUrl(String url) { 
// get JSONArray... } 

jsonArray = getJSONFromUrl(Url); JSONOBject jsonObject = jsonArray.getJSONObject(0); 

或更簡單的方法是使用這個LIB從服務器獲取JSON:http://loopj.com/android-async-http/

AsyncHttpClient client = new AsyncHttpClient(); 
client.get(stringURL, paramsOrNull, new JsonHttpResponseHandler() { 
@Override 
      public void onStart() { 
        // do somethings when start send request to server 
      } 

      @Override 
      public void onFailure(Throwable arg0) { 
        // do somethings when fail to request or receive respone from server 
      } 

      @Override 
      public void onSuccess(JSONObject rawJson) { 
        // do somethings when sucessful... 
} 
+0

謝謝:)我知道了.. – user1902894

相關問題