2014-02-25 92 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); 
}