【问题标题】:android fails to convert string to jsonarrayandroid无法将字符串转换为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。

标签: android arrays json rest go


【解决方案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 关于链接。您应该提取重要的内容以及时保留此答案(该链接将来可能会断开)
猜你喜欢
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 2015-03-29
  • 2023-03-21
  • 2021-01-03
相关资源
最近更新 更多