2014-02-25 89 views
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) 
+0

我相信他越來越最著名的'NullPointerException'修改代碼之後。 – Kedarnath

+0

請從logcat發佈堆棧跟蹤。 – Simon

+0

他爲什麼會得到NullPointerException? – YobrHabr

回答

1

請檢查您的第一個變體,檢查,必須工程(不是最佳,但它必須作品)

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); 
}