1
很久以前,有一個例子在android中用json解析數據。如何獲得更多的變量值?
的.java
public static final String TAG_SUCCESS = "success";
public static final String TAG_DAFTAR_RS = "daftar_rs";
public static final String TAG_ID_RS = "id_rs";
public static final String TAG_NAMA_RS = "nama_rs";
public static final String TAG_LINK_IMAGE_RS = "link_image_rs";
public static final String TAG_ALAMAT_RS = "alamat_rs";
public static final String TAG_TELEPON_RS = "telepon_rs";
.PHP
$result = mysql_query("SELECT id, nama, link_image, alamat, telepon FROM tbl_rumah_sakit ORDER BY nama ASC ") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["daftar_rs"] = array();
while ($row = mysql_fetch_array($result)) {
$daftar_rs = array();
$daftar_rs["id_rs"] = $row["id"];
$daftar_rs["nama_rs"] = stripslashes($row["nama"]);
$daftar_rs["link_image_rs"] = stripslashes($row["link_image"]);
$daftar_rs["alamat_rs"] = stripslashes($row["alamat"]);
$daftar_rs["telepon_rs"] = stripslashes($row["telepon"]);
array_push($response["daftar_rs"], $daftar_rs);
}
$response["success"] = 1;
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "error";
echo json_encode($response);
}
它的工作涼爽,大家很高興。但有一天,像霍比特人這樣的男孩決定改變這個例子,因爲他有自己的任務。當然,他摧毀了一切。 他做了什麼?他做TAG_TEXT_NAME的
public static final String TAG_SUCCESS = "success";
public static final String TAG_LIST = "list_k";
public static final String TAG_ID = "id_k";
public static String TAG_TEXT_NAME;
public static String TAG_LINK_IMAGE;
價值觀和TAG_LINK_IMAGE他從另一個活動由按鈕putExtra得到。變量可以具有值「text1」,「text2」,「text3」和「image1」,「image2」,「image3」它取決於點擊按鈕1,按鈕2或按鈕3。 所以他必須改變和PHP腳本,他也改變了。
$result = mysql_query("SELECT * FROM tbl_rumah_sakit ORDER BY id ASC ") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["list_k"] = array();
while ($row = mysql_fetch_array($result)) {
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text1"] = stripslashes($row["text1"]);
$list_k["image1"] = stripslashes($row["image1"]);
$list_k["text2"] = stripslashes($row["text2"]);
$list_k["image2"] = stripslashes($row["image2"]);
$list_k["text3"] = stripslashes($row["text3"]);
$list_k["image3"] = stripslashes($row["image3"]);
array_push($response["list_k"], $list_k);
}
$response["success"] = 1;
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "error";
echo json_encode($response);
}
他希望它會工作,但他得到了麻煩。它只適用於text1和image1。他很不高興。但他不會放手。他這樣修改它
switch(true){
case "text1":
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text1"] = stripslashes($row["text1"]);
$list_k["image1"] = stripslashes($row["image1"]);
array_push($response["list_k"], $list_k);
break;
case "text2":
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text2"] = stripslashes($row["text2"]);
$list_k["image2"] = stripslashes($row["image2"]);
array_push($response["list_k"], $list_k);
break;
case "text3":
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text3"] = stripslashes($row["text3"]);
$list_k["image3"] = stripslashes($row["image3"]);
array_push($response["list_k"], $list_k);
break;
default: echo"You didn't give me a value how I can work? Please, give me text1 or text2 or text3";
}
但它只適用於第一個值(text1)。他的失望很深。但他不會放手。他改變了他的PHP腳本到這
if('text1'){
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text1"] = stripslashes($row["text1"]);
$list_k["image1"] = stripslashes($row["image1"]);
array_push($response["list_k"], $list_k);
}else if('text2'){
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text2"] = stripslashes($row["text2"]);
$list_k["image2"] = stripslashes($row["image2"]);
array_push($response["list_k"], $list_k);
}else if("text3"){
$list_k = array();
$list_k["id_k"] = $row["id"];
$list_k["text3"] = stripslashes($row["text3"]);
$list_k["image3"] = stripslashes($row["image3"]);
array_push($response["list_k"], $list_k);
}
但他的應用程序一次又一次地崩潰。請,如果你看到這個帖子,如果你能幫忙,不要忽視他。他是非常光榮的男孩。 logcat的
02-25 08:55:24.920: W/System.err(2822): org.json.JSONException: No value for text2(text3 give the same logcat error)
02-25 08:55:24.930: W/System.err(2822): at org.json.JSONObject.get(JSONObject.java:354)
02-25 08:55:24.930: W/System.err(2822): at org.json.JSONObject.getString(JSONObject.java:510)
02-25 08:55:24.930: W/System.err(2822): at com.example.testtaskmyapp.MainActivity$Activity.doInBackground(MainActivity.java:158)
02-25 08:55:24.930: W/System.err(2822): at com.example.testtaskmyapp.MainActivity$Activity.doInBackground(MainActivity.java:1)
02-25 08:55:24.930: W/System.err(2822): at android.os.AsyncTask$2.call(AsyncTask.java:185)
02-25 08:55:24.930: W/System.err(2822): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
02-25 08:55:24.930: W/System.err(2822): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
02-25 08:55:24.940: W/System.err(2822): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
02-25 08:55:24.940: W/System.err(2822): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
02-25 08:55:24.940: W/System.err(2822): at java.lang.Thread.run(Thread.java:1019)
我相信他越來越最著名的'NullPointerException'修改代碼之後。 – Kedarnath
請從logcat發佈堆棧跟蹤。 – Simon
他爲什麼會得到NullPointerException? – YobrHabr