我已经制作了一个PHP代码来从MYSQL获取数据,但现在我正在努力将它恢复到我的android
php代码:
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$user_id = $_GET['user_id'];
require_once('dbConnect.php');
$user_tags = array();
foreach ($_REQUEST['user_id'] as $key => $val) {
$user_tags[$key] = filter_var($val, FILTER_SANITIZE_STRING);
}
$user_ids = "'" . implode("','", $user_tags) . "'";
$sql = "SELECT * FROM user_tags WHERE user_id IN ({$user_ids})";
$r = mysqli_query($con, $sql);
//creating a blank array
$result = array();
//looping through all the records fetched
while ($row = mysqli_fetch_array($r)) {
$result['tags'][] = $row['tags'];
}
//Displaying the array in json format
echo json_encode(array('result' => $result));
mysqli_close($con);
}
这给出了结果:{"结果":{"标签":[" Pascol"," PHP"," ; Python的"]}}
当我尝试敬酒"标签"在我的android中我收到此错误:
rg.json.JSONException: Value {"tags":["Pascol","PHP","Python"]} at result of type org.json.JSONObject cannot be converted to JSONArray
我的安卓代码:
public class Jobs extends AppCompatActivity {
public static final String DATA_URL = "http://allwaysready.16mb.com/Sort.php?work[]=";
public static String tags="";
private String JSON_STRING;
public static final String TAG_JSON_ARRAY="result";
public static final String KEY_USER_TAGS="tags";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jobs);
getEmployee();
Toast.makeText(getApplicationContext(),tags,Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(),"hi",Toast.LENGTH_LONG).show();
check();
}
private void getEmployee(){
class GetEmployee extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(Jobs.this,"Fetching...","Wait...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
showEmployee(s);
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(Config.URL_GET_TAG,UserAreaActivity.id);
return s;
}
}
GetEmployee ge = new GetEmployee();
ge.execute();
}
private void showEmployee(String json) {
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray result = jsonObject.getJSONArray(TAG_JSON_ARRAY);
JSONObject c = result.getJSONObject(0);
String ttags = c.getString(KEY_USER_TAGS);
tags=ttags.toString();
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
我认为响应是作为JSONObject发布的。您正在尝试将其转换为JSONArray。
试试这个,
JSONObject valuejsn = new JSONObject(response);
JSONArray tags =valuejsn.getJSONArray("tags");
答案 1 :(得分:0)
“result”不是JSONArray,它是JSONObject。
尝试做:
JSONObject jsonObject = new JSONObject(json);
JSONObject result = jsonObject.getJSONObject(TAG_JSON_ARRAY);
JSONArray tags = jsonObject.getJSONArray(KEY_USER_TAGS);