这就是我想做的。我想从mysql数据库中检索两个数组。这两个阵列分别进行回波:
echo json_encode(array("friendrequest"=>$friendrequest));
echo json_encode(array("friendresult"=>$friendresult));
这是我用来处理结果字符串的代码:
public void onResponse(String response) {
Log.d("Response", response);
try {
JSONObject jsonObj = new JSONObject(response);
JSONArray ja_data = jsonObj.getJSONArray("friendresult");
String[] from = {
"first_name",
"anytimer_count",
"relationship_status"
}; //string array
int[] to = {
R.id.textListView1,
R.id.textListView2,
R.id.textListView3
}; //int array of views id's
JSONArrayAdapter arrayListAdapter = new JSONArrayAdapter(MyFriendsActivity.this, ja_data, R.layout.custom_list_items, from, to);
list.setAdapter(arrayListAdapter);
JSONArray ja_requests = jsonObj.getJSONArray("friendrequest");
int ja_lengths = ja_requests.length();
Log.d("Response", Integer.toString(ja_lengths));
} catch (JSONException e) {
Log.e("MyFriendsActivity", "unexpected JSON exception", e);
}
现在,处理代码中第2行记录的响应给出了以下信息:
回应=
{
"friendrequest": [
{
"first_name": "Tom",
"anytimer_count": "0",
"relationship_status": "0"
},
{
"first_name": "Bert",
"anytimer_count": "0",
"relationship_status": "0"
}
]
}{
"friendresult": [
{
"first_name": "Luuk",
"anytimer_count": "0",
"relationship_status": "1"
}
]
}
它包含所有应该发送的值,并且是正确的。
问题是,我的处理代码只能识别php脚本中首先编码的数组。基本上,如果我交换php脚本中两行代码的位置,“friendrequest”将包含值,而“friendresult”则不包含值,反之亦然。我在这里做错什么了?
获取时出错:
json.JSONException:friendresult没有值
在
com.example.tomva.anytimereverywhere.MyFriendsActivity$3.onResponse(MyFriendsActivity.java:84)
第84行是以下行:
JSONArray ja_data = jsonObj.getJSONArray("friendresult");
最佳答案
您必须在数组中传递您的json才能将它们全部提取出来。
应该是:
[
<?php
echo json_encode(array("friendrequest"=>$friendrequest));
echo ",";
echo json_encode(array("friendresult"=>$friendresult));
?>
]
Related answer
或者你可以用下面的
echo json_encode(array("friendrequest"=>$friendrequest,"friendresult"=>$friendresult));