GOAL:调用此函数并查看从php返回的JSON数组,看看元素[0]或[1]==1。PHP查询一个布尔值表,我想知道哪一个是1和0,以便继续功能。
我有这个函数来执行httpGET并返回JSON对象
class CheckVotingStatus extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
boolean failure = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Vote.this);
pDialog.setMessage("Checking vote Status...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub
// Check for success tag
int success;
try {
// Building Parameters
Log.d("request!", "starting");
// getting product details by making HTTP request
JSONObject json = jParser.getJSONFromUrl(LOGIN_URL);
// check your log for json response
// Log.d("Login attempt", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// Log.d("Login Successful!", json.toString());
JSONArray answerObj = json.getJSONArray(TAG_ANSWER);
// get first product object from JSON Array
JSONObject answer = answerObj.getJSONObject(0);
String bool1s = answer.getString(TAG_BOOL1);
JSONObject answer2 = answerObj.getJSONObject(1);
String bool2s = answer2.getString(TAG_BOOL2);
/******************************************/
if (bool1s.equals("1")&& bool2s.equals("0"))
{
startVoting = true;
}
else if (bool1s.equals("0")&& bool2s.equals("1"))
{
endVoting = true;
voted = false;
}
/*******************************************/
//return json.getString(TAG_MESSAGE);
}
else
{
//Log.d("Login Failure!", json.getString(TAG_MESSAGE));
//return json.getString(TAG_MESSAGE);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url) {
// dismiss the dialog once product deleted
pDialog.dismiss();
if (file_url != null){
Toast.makeText(Vote.this, file_url, Toast.LENGTH_LONG).show();
}
}
我的PHP页面查询从数据库返回两个bool
$response = array();
$resttt = "SELECT startingBool, endingBool FROM vote_count";
$result = mysql_query("$resttt");
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$answer = array();
$answer["startingBool"] = $result["startingBool"];
$answer["endingBool"] = $result["endingBool"];
// success
$response["success"] = 1;
$response["answerswer"] = array();
array_push($response["answerswer"], $answer);
// echoing JSON response
echo json_encode($response);
}
我收到了一个输入结束异常和一个错误,因为答案没有值
JSON解析器
public JSONObject getJSONFromUrl(final String url) {
// Making HTTP request
try {
// Construct the client and the HTTP request.
//DefaultHttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = createHttpClient();
HttpGet httpGet = new HttpGet(url);
// Execute the POST request and store the response locally.
HttpResponse httpResponse = httpClient.execute(httpGet);
// Extract data from the response.
HttpEntity httpEntity = httpResponse.getEntity();
// Open an inputStream with the data content.
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
// Create a BufferedReader to parse through the inputStream.
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
// Declare a string builder to help with the parsing.
StringBuilder sb = new StringBuilder();
// Declare a string to store the JSON object data in string form.
String line = null;
// Build the string until null.
while ((line = reader.readLine()) != null) {
sb.append(line + "'n");
}
// Close the input stream.
is.close();
// Convert the string builder data to an actual string.
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// Try to parse the string to a JSON object
try {
Log.v("JSON", json);
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// Return the JSON Object.
return jObj;
}
php中的echo必须是这样的
{"成功":1,"答案":〔{"bool1":"0","bool2":"1"}〕}
和您的php skript
//conect to database, create table bool_table, insert data to bool_table.......
$response = array();
$resttt = "SELECT bool1, bool2 FROM bool_table";
$result = mysql_query("$resttt");
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$answer = array();
$answer["bool1"] = $result["bool1"];
$answer["bool2"] = $result["bool2"];
// success
$response["success"] = 1;
$response["answerswer"] = array();
array_push($response["answerswer"], $answer);
// echoing JSON response
echo json_encode($response);
}
和解析JSON
private static final String TAG_SUCCESS = "success";
private static final String TAG_ANSWER = "answerswer";
private static final String TAG_BOOL1 = "bool1";
private static final String TAG_BOOL2 = "bool2";
int success;
......
...
JSONObject json = jsonParser.makeHttpRequest("xxxxxxxxxxxxxx", "GET", params);
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully received product details
JSONArray answerObj = json.getJSONArray(TAG_ANSWER);
// get first product object from JSON Array
JSONObject answer = answerObj.getJSONObject(0);
String bool1s = answer.getString(TAG_BOOL1));
String bool2s = answer.getString(TAG_BOOL2));
}else{
.......
....
当您有jsonarray时,尝试获取值
JSONArray json = jParser.getJSONFromUrl(LOGIN_URL);
JSONObject json_obj = json.getJSONObject(0);
String bool1s = json_obj.getString(TAG_BOOL1);
String bool2s = json_obj.getString(TAG_BOOL2);