gpt4 book ai didi

android - 无法使用 Volley 将 JSONArray 转换为 JSONObject

转载 作者:太空狗 更新时间:2023-10-29 16:39:26 24 4
gpt4 key购买 nike

我正在尝试使用 Volley 来使用 Web 服务。这是我的 logcat 输出:

12-14 10:45:41.750: I/Annuaire2error(4005): org.json.JSONException: Value [{"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"}]}] of type org.json.JSONArray cannot be converted to JSONObject

它似乎无法访问我的网络服务的label 的值。如何将 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);

最佳答案

您得到的响应是一个 JSONArray 而不是 JSONObject

public void onResponse(JSONObject response)// resposne should be JSONArray
// Change it to JSONArray

这个

JSONObject value = response.getJSONObject("label"); // wrong
// label is a json array

你的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"
}
]
}
]

应该是这样的

 @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

编辑:

 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

}

};

并使用

    JsonArrayRequest  jr =new JsonArrayRequest(Request.Method.GET,url, listener, errorListener) ;

编辑 2:

我检查了源,它看起来像下面

 public JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener) {
super(Method.GET, url, null, listener, errorListener);

}

关于android - 无法使用 Volley 将 JSONArray 转换为 JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20582190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com