Ine*_*het 2 android web-services android-volley android-json
我正在尝试使用Volley来使用Web服务。这是我的logcat输出:
12-14 10:45:41.750:I / Annuaire2error(4005):org.json.JSONException:值[{“ label”:[{“ pers_nom”:“ yen”,“ pers_id”:“ 1”,“ pers_prenom” :“ ines”,“ pers_email”:“ yen98.ines@gmail.com”,“ pers_phone”:“ 443456784”},{“ pers_nom”:“ Jamin”,“ pers_id”:“ 2”,“ pers_prenom”:“ org.json.JSONArray类型的Derkok“,” pers_email“:” jamin.drk23@gmail.com“,” pers_phone“:” 2345512398“}]}}]无法转换为JSONObject
看来它无法访问label我的Web服务的价值。如何从转换JSONArray为JSONObject?
这是我的代码:
mRequestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(TAG,response.toString());
try{
JSONObject value = response.getJSONObject("label");
String essai = value.getString("pers_nom");
/**
* just for check
* */
Toast.makeText(getActivity(), ""+essai, Toast.LENGTH_SHORT).show();
Log.d("volley output", essai);
} catch(Exception e) {
e.printStackTrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), "errrrroooor", Toast.LENGTH_LONG).show();
Log.i(TAG+"error",error.getMessage());
}
});
mRequestQueue.add(jr);
Run Code Online (Sandbox Code Playgroud)
您得到的响应是JSONArray而不是JSONObject
public void onResponse(JSONObject response)// resposne should be JSONArray
// Change it to JSONArray
Run Code Online (Sandbox Code Playgroud)
这个
JSONObject value = response.getJSONObject("label"); // wrong
// label is a json array
Run Code Online (Sandbox Code Playgroud)
您的json
[ // json array node
{ // json object node
"label": [ // json array label
{
"pers_nom": "yen",
"pers_id": "1",
"pers_prenom": "ines",
"pers_email": "yen98.ines@gmail.com",
"pers_phone": "443456784"
},
{
"pers_nom": "Jamin",
"pers_id": "2",
"pers_prenom": " Derkok",
"pers_email": "jamin.drk23@gmail.com",
"pers_phone": "2345512398"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
应该是这样的
@Override
public void onResponse(JSONArray response) {
Log.i(TAG,response.toString());
try{
JSONObject value = response.getJSONObject(0);
JSONArray jr = value.getJSONArray("label");
for(int i=0;i<jr.length();i++)
{
JSONObject jb = (JSONObject) jr.get(i);
String pers_nom = jb.getString("pers_nom");
Log.i(".........",pers_nom);
...// similarly for id and so on..
}
...// rest of the code
Run Code Online (Sandbox Code Playgroud)
编辑:
Response.Listener<JSONArray> listener = new Response.Listener<JSONArray>()
{
@Override
public void onResponse(JSONArray response) {
// TODO Auto-generated method stub
}
};
Response.ErrorListener errorListener = new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
};
Run Code Online (Sandbox Code Playgroud)
并使用
JsonArrayRequest jr =new JsonArrayRequest(Request.Method.GET,url, listener, errorListener) ;
Run Code Online (Sandbox Code Playgroud)
编辑2:
我检查了源,看起来像下面
public JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener) {
super(Method.GET, url, null, listener, errorListener);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10226 次 |
| 最近记录: |