android无法将字符串转换为jsonarray

Posted

技术标签:

【中文标题】android无法将字符串转换为jsonarray【英文标题】:android fails to convert string to jsonarray 【发布时间】:2017-06-04 21:11:40 【问题描述】:

嘿,我编写了一个 golang 休息服务,它工作正常! 问题是我需要在我的 android 应用程序中使用该服务,所以我需要一个 JSONArray 或一个 JSONObject。

当我像这样调用服务时,我没有问题

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() 
                @Override
                public void onResponse(String response) 
                    Log.d("RESPONSE: ",response);

但是当我尝试像这样调用服务时

JsonArrayRequest req= new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() 
                @Override
                public void onResponse(JSONArray response) 

json 转换失败。

我真的不知道我的错在哪里.. 谢谢 约翰

【问题讨论】:

你检查过json格式吗?由于它无法转换它...... PS:这应该引发异常,它应该出现在这篇文章中。而且我认为golang 部分是不必要的。基本上,您正在尝试在 Android 应用上转换 Json。 【参考方案1】:

您必须使用 Api 调用设置标题检查此代码将有助于解决您的问题

 public void makeJsonArrayRequest(Context context, String url, final String requestTag, final ServiceCallBack listener) 

    final ProgressDialog pDialog = new ProgressDialog(context);
    pDialog.setMessage("Loading...");
    pDialog.show();


    JsonArrayRequest jsonObjReq = new JsonArrayRequest(
            url,
            new Response.Listener<JSONArray>() 

                @Override
                public void onResponse(JSONArray response) 
                    Log.d(TAG, response.toString());

                    listener.onSuccess(requestTag, response.toString());

                    pDialog.hide();
                
            , new Response.ErrorListener() 

        @Override
        public void onErrorResponse(VolleyError error) 
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            // hide the progress dialog
            listener.onFailure(requestTag, error.getMessage());

            pDialog.hide();
        


    ) 

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError 
            HashMap<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            return headers;
        
    ;

    AppController.getInstance().addToRequestQueue(jsonObjReq, requestTag);


VolleyExample

【讨论】:

请参阅How to Answer 关于链接。您应该提取重要的内容以及时保留此答案(该链接将来可能会断开)

以上是关于android无法将字符串转换为jsonarray的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JsonArray 对象转换为要在 spinner java android 上使用的字符串数组?

在android中将JsonArray转换为byte []数组

JSONObject 无法在 android 中转换为 JSONArray

将 JSONArray 转换为字符串数组

jsonobject无法转换为jsonarray android studio

java.lang.string 无法转换为 JSONArray Android Mysql