2012-12-14 95 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

相关问题