这是列表活动。
清单活动:
public class ListDataActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_listview); url = "http://xxx.xx.x.xxx/index.php"; Bundle c = getIntent().getExtras(); blo = c.getString("blood"); new ProgressTask(ListDataActivity.this).execute(); } @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); } class ProgressTask extends AsyncTask<String, Void, Boolean> { ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>(); ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); { if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected()) { } else { Toast.makeText(getApplicationContext(), "INTERNET CONNECTION NOT PRESENT", Toast.LENGTH_SHORT) .show(); startActivity(new Intent(ListDataActivity.this, MainActivity.class)); } } public ProgressTask(ListActivity activity) { context = activity; } private Context context; protected void onPreExecute() { } @Override protected void onPostExecute(final Boolean success) { ListAdapter adapter = new SimpleAdapter(context, jsonlist, R.layout.row_listitem, new String[] { name, Category }, new int[] { R.id.vehicleType, R.id.vehicleColor }) { @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { // This a new view we inflate the new layout LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.row_listitem, null); } // TODO Auto-generated method stub if (position % 2 == 1) { convertView.setBackgroundColor(Color.rgb(120, 151, 66)); } else { convertView.setBackgroundColor(Color.rgb(86, 107, 129)); } return super.getView(position, convertView, parent); } }; setListAdapter(adapter); lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); } protected Boolean doInBackground(final String... args) { url = url + "?blo_name=" + blo; Log.d("", url); baseAdapter jParser = new baseAdapter(); JSONArray json = jParser.getJSONFromUrl(url); if (json != null) { for (int i = 0; i < json.length(); i++) { try { JSONObject c = json.getJSONObject(i); String vtype = c.getString(name); String vfuel = c.getString(Category); HashMap<String, String> map = new HashMap<String, String>(); // Add child node to HashMap key & value map.put(name, vtype); map.put(Category, vfuel); jsonlist.add(map); } catch (JSONException e) { e.printStackTrace(); } } } return null; }
基本适配器类:
public class baseAdapter { static InputStream iStream = null; static JSONArray jarray = null; static String json = ""; public baseAdapter() { } public JSONArray getJSONFromUrl(String url) { StringBuilder builder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); try { HttpResponse response = client.execute(httpGet); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if (statusCode == 200) { HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(content)); String line; while ((line = reader.readLine()) != null) { builder.append(line); } } else { Log.e("==>", "Failed "); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // Parse String to JSON object try { jarray = new JSONArray(builder.toString()); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON Object return jarray; }
的PHP:
if(isset($_POST['blo_name'])){ $str = $_POST['blo_name']; $sql = "SELECT * FROM blood_group where Category IN ($str)"; $result = mysql_query($sql); while($row=mysql_fetch_array($result)) $output[]=$row; print(json_encode($output)); mysql_close(); }
我的问题是,我尝试解析bol字符串,它的值就像bol="'B-','O-'";我解析这种类型的值时一样,它没有显示结果,并给出了logcat。
bol
bol="'B-','O-'";
日志猫:
Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONArray
当我解析简单的值"B,O"并且更改数据库时,它给我很好的结果。但是,我需要解析该值。请帮帮我。谢谢
"B,O"
如您所说,您无法解析类似于“’B-‘,’O-‘”的json字符串,但是您可以成功解析诸如“ B,O”的字符串。
这是因为单引号(’)被认为是json的特殊字符,您可能希望在解析字符串之前像字符串中的'一样对其进行转义。