【问题标题】:java.lang.String cannot be converted to JSONArray from Okhttpjava.lang.String 无法从 Okhttp 转换为 JSONArray
【发布时间】:2017-06-19 03:24:06
【问题描述】:

我正在尝试从服务器获取 json 并将其放入我的 RecyclerView,但它显示“java.lang.String 无法转换为 JSONArray”。我试图跟踪我的 json,但它什么也没显示。怎么了,怎么解决?

     private void Prosesdataserver(int id){
     AsyncTask<Integer, Void, Void> task = new AsyncTask<Integer, Void, Void>() {
        @Override
        protected Void doInBackground(Integer... integers) {
        OkHttpClient client = new OkHttpClient();
        try{
           RequestBody formBody = new FormBody.Builder().add("username_krm", username).add("password_krm", password).build();
           Request request = new Request.Builder().url("http://" + urlpakai + "/utrapos/index.php/getpenawaran?id="+integers[0]).post(formBody).build();
           response = client.newCall(request).execute();
           ini = response.body().toString();
           JSONArray array = new JSONArray(ini);
           System.out.println("Saya Berkata: " + ini);
              for(int i=0; i<array.length();i++){
                 JSONObject object = array.getJSONObject(i);
                 DataJson hasil = new DataJson(object.getInt("id"), object.getString("kode"), object.getString("tglpenawaran"), object.getString("nama"), object.getString("supplier"), object.getString("nopenawaran"));
                 data.add(hasil);
              }
            }catch (IOException e){
               e.printStackTrace();
             }
             catch (JSONException e){
                e.printStackTrace();
             }
  return null;
 }

【问题讨论】:

  • 上传您尝试转换为 JSON 的字符串
  • 在此处发布您的json
  • @AxelH,我正在为我的网址使用 codeigniter。
  • @DennyKurniawan 你检查过请求了吗?你得到一个 JSON(检查一个 REST 客户端)吗?如果是这样,它的格式不像 JSON(如错误所说)
  • 尝试使用邮递员检查您的回复

标签: android json android-asynctask okhttp


【解决方案1】:

根据您分享的最少信息,我假设错误出现在这一行

JSONArray array = new JSONArray(ini);

背后的原因是你的ini。应该是

ini = response.body().string();

而不是.toString()

这是一个示例代码:

try {
        String responseData = response.body().string();
        JSONArray json = new JSONArray(responseData);
    } catch (JSONException e) {

    }

如需更多了解如何使用 OkHttp 进行网络调用,请查看documentation

【讨论】:

  • 感谢您指向 .string() 部分。我还用 toString() 打错了,出现错误。
【解决方案2】:

改变这一行ini = response.body().toString();

ini = response.body().string();

【讨论】:

    【解决方案3】:

    在您的数据库中添加全文:

    ALTER TABLE yourtable ADD FULLTEXT(kode,tglpenawaran,nama,supplier,nopenawaran);
    

    然后做一个测试:

    SELECT * FROM yourtable WHERE MATCH (kode,tglpenawaran,nama,supplier,nopenawaran) AGAINST ('text')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多