我试图通过使用Json解析的Android应用程序上的MySql获取数据,为什么通过Json解析数据?
这是我的代码:
HttpClient hp=new DefaultHttpClient(new BasicHttpParams());
HttpPost post=new HttpPost(Globals.webUrl+"diseases.php"); // add domain name as argument
try{
HttpResponse res=hp.execute(post);
InputStream in=res.getEntity().getContent();
BufferedReader bf=new BufferedReader(new InputStreamReader(in));
String temp="";
while((temp=bf.readLine())!=null)
{
s.append(temp+"\n");
}
System.out.println(s.toString());
Log.e("data", s.toString());
JSONObject obj=new JSONObject(s.toString());
JSONArray jr=obj.getJSONArray("ar");
for(int i=0;i<jr.length();i++)
{
JSONObject jb=jr.getJSONObject(i);
if(jb!=null)
//ar.add(jb.get("id").toString());
ar.add(jb.get("disease").toString());
//adp.add(jb.get("diseases").toString());
arDiseaseId.add(jb.get("id"));
}
}
catch(Exception e)
{
e.printStackTrace();
}
我在PHP文件中获取数据(采用Json格式)
{"ar":[{"id":"1","disease":"Achondroplsia"},{"id":"2","disease":"Acidic Reflux"},{"id":"3","disease":"Acne"},{"id":"4","disease":"Addison's Disease"},{"id":"5","disease":"Alcoholism"},{"id":"6","disease":"Allergies"},{"id":"7","disease":"Alzheimer's Disease"},{"id":"8","disease":"Amenorrhea"},{"id":"9","disease":"Anal Fissure"},{"id":"10","disease":"Anemia"},{"id":"11","disease":"Angina Pectoris"},{"id":"12","disease":"Anorexia Nervosa"},{"id":"13","disease":"Anthrax"},{"id":"14","disease":"Anxiety Disorder"},{"id":"15","disease":"Appendicitis"},{"id":"16","disease":"Arthritis"},{"id":"17","disease":"Asthma"},{"id":"18","disease":"Autism"},{"id":"19","disease":"Avian influenza"},{"id":"20","disease":"BPD"},{"id":"21","disease":"Back Pain"},{"id":"22","disease":"Baldness"}]}
但不是在Android应用中。
答案 0 :(得分:1)
使用volley库进行json解析,很容易理解和实现。 Android JSON parsing using Volley
答案 1 :(得分:1)
试试这段代码:
DefaultHttpClient hp = new DefaultHttpClient(new BasicHttpParams());
HttpPost post = new HttpPost(Globals.webUrl+"diseases.php");
// Depends on your web service
post.setHeader("Content-type", "application/json");
InputStream in = null;
String result = null;
try {
HttpResponse res = hp.execute(post);
HttpEntity entity = res.getEntity();
in = entity.getContent();
// json is UTF-8 by default
BufferedReader bf = new BufferedReader(new InputStreamReader(in, "UTF-8"), 8);
StringBuilder s = new StringBuilder();
String temp = null;
while ((temp = bf.readLine()) != null)
{
s.append(temp + "\n");
}
Log.e("data", s.toString());
result = s.toString();
JSONObject jObject = new JSONObject(result);
JSONArray jr = jObject.getJSONArray("ar");
for (int i=0; i < jr.length(); i++)
{
try {
JSONObject jb = jr.getJSONObject(i);
if(jb!=null)
//ar.add(jb.get("id").toString());
ar.add(jb.get("disease").toString());
//adp.add(jb.get("diseases").toString());
arDiseaseId.add(jb.get("id"));
} catch (JSONException e) {
// Oops
}
}
} catch (Exception e) {
// Oops
}
finally {
try{if(in != null)in.close();}catch(Exception squish){}
}
如果它仍然无效,我认为您的服务器有问题。我已经检查了这段代码并且它正常工作。