web-dev-qa-db-ja.com

com.Android.volley.ParseError:org.json.JSONException

ボレーライブラリからこのエラーが発生しました

@Override
public void onErrorResponse(VolleyError error) {
    error.printStackTrace();
}

エラー

com.Android.volley.ParseError: org.json.JSONException: Value [{"id":"admin","name":"Admin"}] of type org.json.JSONArray cannot be converted to JSONObject

結果を文字列として受け取り、jacksonを使用して処理するにはどうすればよいですか?

結果を文字列として受け取りたい場合は、JSONRequestを使用しないでください。単純なRequestクラスを使用します。問題は非常に単純で、サーバーは1つの要素のみを含むJSONArrayを返します。 JSONArrayはJSONObjectではありません。そのため、解析が失敗します。

22

JsonObjectRequestの代わりにJsonArrayRequestを使用する必要があります。次のようなコード:

    RequestQueue queue = Volley.newRequestQueue(this);

    final String url = "http://192.168.88.253/mybazar/get_product_list.php";

    // prepare the Request
    JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONArray>()
            {
                @Override
                public void onResponse(JSONArray response) {
                    // display response
                    Log.d("Response", response.toString());
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("Error.Response", error.toString());
                }
            }
    );



    // add it to the RequestQueue
    queue.add(getRequest);

うまくいけば、それは問題を解決します。

6

ボレーでサポートされているクラスJsonArrayRequestがあることに気付いたので、このクラスを使用して問題を解決しました。JsonObjectRequestを使用していました。

https://Android.googlesource.com/platform/frameworks/volley/+/43950676303ff68b23a8b469d6a534ccd1e08cfc/src/com/Android/volley/toolbox