Я пытаюсь получить урок json
в ListView
,
это приложение просто показывает Array
в json
,
Когда я использую источник URL из этот сайт, приложение работает полностью
но когда я использую локальные данные json
из моей базы данных данные не появились в моем приложении.
В строке 99 и 68 (вы можете увидеть мою команду в коде)
Это мой код
testing.php
<?php
//Create Database connection
$db = mysql_connect("localhost","root","root");
if (!$db) {
die('Could not connect to db: ' . mysql_error());
}
//Select the Database
mysql_select_db("skripsi",$db);
//Replace * in the query with the column names.
$result = mysql_query("select * from maintenance", $db);
//Create an array
$json_response = array( "maintenance" => array());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array['mid'] = $row['mid'];
$row_array['pid'] = $row['pid'];
$row_array['status'] = $row['status'];
$row_array['head'] = $row['head'];
$row_array['note'] = $row['note'];
//push the values in the array
array_push($json_response["maintenance"],$row_array);
}
echo json_encode($json_response);
?>
Это мой класс JSONParse
private class JSONParse extends AsyncTask<String, String, JSONObject> { **//LOGCAT NAVIGATE TO THIS LINE**
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
mid = (TextView) getActivity().findViewById(R.id.mid);
pid = (TextView) getActivity().findViewById(R.id.pid);
status = (TextView) getActivity().findViewById(R.id.status);
head = (TextView) getActivity().findViewById(R.id.head);
note = (TextView) getActivity().findViewById(R.id.note);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.makeHttpRequestWithoutParams(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
// Getting JSON Array from URL
maintenance = json.getJSONArray(TAG_OS); **//LOGCAT NAVIGATE TO THIS LINE**
for(int i = 0; i < maintenance.length(); i++){
JSONObject c = maintenance.getJSONObject(i);
// Storing JSON item in a Variable
String mid = c.getString(TAG_MID);
String pid = c.getString(TAG_PID);
String status = c.getString(TAG_STATUS);
String head = c.getString(TAG_HEAD);
String note = c.getString(TAG_NOTE);
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_MID, mid);
map.put(TAG_PID, pid);
map.put(TAG_STATUS, status);
map.put(TAG_HEAD, head);
map.put(TAG_NOTE, note);
oslist.add(map);
list=(ListView) getActivity().findViewById(R.id.list);
ListAdapter adapter = new SimpleAdapter(getActivity(), oslist,
R.layout.list_v,
new String[] { TAG_MID,TAG_PID, TAG_STATUS, TAG_HEAD, TAG_NOTE}, new int[] {
R.id.mid,R.id.pid, R.id.status,R.id.head, R.id.note});
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getActivity(), "You Clicked at " + oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
это мой JSONObject
public JSONObject makeHttpRequestWithoutParams(String url) {
// Making HTTP request
try {
// defaultHttpClient
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;
}
LogCat
09-16 14:46:30.661 3481-3481/com.example.blackcustomzier.skripsi W/EGL_emulation﹕ eglSurfaceAttrib not implemented
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ org.json.JSONException: No value for android
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at org.json.JSONObject.get(JSONObject.java:354)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at org.json.JSONObject.getJSONArray(JSONObject.java:548)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at com.example.blackcustomzier.skripsi.FragmentMaintain$JSONParse.onPostExecute(FragmentMaintain.java:99)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at com.example.blackcustomzier.skripsi.FragmentMaintain$JSONParse.onPostExecute(FragmentMaintain.java:68)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at android.os.AsyncTask.finish(AsyncTask.java:631)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5103)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-16 14:46:30.791 3481-3481/com.example.blackcustomzier.skripsi W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
надеюсь, кто-то может мне помочь, спасибо
maintenance = json.getJSONArray (TAG_OS);
Похоже, что значение TAG_OS равно «android», но в вашем объекте json нет массива с именем «android», поэтому сначала выведите json inf в виде строкового формата, используя для этого некоторую строку, и убедитесь, что имя вашего массива json равно « андроид».
попробуйте эту ссылку для разбора вашего JSON
http://jsonformatter.curiousconcept.com/
Других решений пока нет …