当前位置: 首页 > 面试题库 >

org.json.JSONObject无法转换为JSONArray

汪泓
2023-03-14
问题内容

在json中工作时出现异常。我的JSONPresr类如下

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;

 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.json.JSONException;
 import org.json.JSONObject;

 import android.os.AsyncTask;
 import android.util.Log;

public class JSONParser {
 static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    public JSONObject getJSONFromUrl(String url) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            System.out.println(" value in json sting"+json);
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
            Log.e("JSON Parser", "Error parsing data [" + e.getMessage()+"] "+json);
            System.out.println(" error is here");

        }

        // return JSON String
        return jObj;

    }

    }

我正在通过这些代码获取数据

          String TAG_user_detail = "user_details";
              String TAG_user_id = "user_id";
             String TAG_user_name = "user_name";
             String TAG_user_phone = "user_phone";
             String TAG_ref_id = "ref_id";
             JSONArray user_detail_jsonarray = null;
             JSONParser jParser = new JSONParser();

             // getting JSON string from URL
             JSONObject json = jParser.getJSONFromUrl(url);
             try {
                 // Getting Array of Contacts
                 user_detail_jsonarray = json.getJSONArray(TAG_user_detail);

                 // looping through All Contacts
                 for(int i = 0; i < user_detail_jsonarray.length(); i++){
                     JSONObject c = user_detail_jsonarray.getJSONObject(i);

                     // Storing each json item in variable
                     int id = c.getInt(TAG_user_id);
                     System.out.println("user id from json"+id);

                     String name_fromjson = c.getString(TAG_user_name);
                     System.out.println("user name from json"+name_fromjson);

                     int phone_no_fromjson = c.getInt(TAG_user_phone);
                     System.out.println("user phone from json"+phone_no_fromjson);

                     int ref_id_fromjson = c.getInt(TAG_ref_id);
                     System.out.println("user ref id from json"+ref_id_fromjson);





                 }
             } catch (JSONException e) {
                 e.printStackTrace();
             }

但是我非常惊讶地在这一行中获得异常

    user_detail_jsonarray = json.getJSONArray(TAG_user_detail);

我的股权跟踪消息为

       {"ref_id":1295,"user_name":"chand","user_phone":"9620085675","user_id":"1"} at user_details of type org.json.JSONObject cannot be converted to JSONArray

我尝试了许多链接,但不幸的是我无法获得结果。请任何人帮助我解决这个问题。在此先感谢所有人


问题答案:

从错误中可以明显看出,您正在尝试将Json Object转换为Json数组。那不应该。

这是读取您的JSON响应的代码。

String json = "Assuming that here is your JSON response"; 
try {
    JSONObject parentObject = new JSONObject(json);
    JSONObject userDetails = parentObject.getJSONObject("user_details");

    //And then read attributes like             
    String name = userDetails.getString("user_name"); 
    String phone = userDetails.getString("user_phone");
    String id = userDetails.getString("re‌​f_id");

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

上面的代码用于{"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","re‌​f_id":6386}}JSON。



 类似资料:
  • 问题内容: 当我运行以下代码时… …在运行时,我在日志输出中看到以下内容: 我不明白为什么。 问题答案: 您输入了错误的类。更改 至

  • 问题内容: 当我在本地主机中尝试时,它可以工作。这是我的本地主机提供的JSON。 是这个网址http://api.androidhive.info/contacts/中的错误 X 主要活动 错误 问题答案: 您可以尝试以下方法:

  • 我点击API,得到的响应是 我试图获取用户名的逻辑。 我做错了什么?

  • 我不明白,为什么我会有这个错误: 04-24 22:11:51.263:W/System.err(27504):org.JSON.jsonException:Value不能转换为JSONArray

  • 问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。

  • 问题内容: 我当前正在使用条件来检索用户的详细信息,但是当尝试用合适的用户查询详细信息对象时,我得到了ClassCastException。 我的标准代码; 我也尝试使用; 两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但是还有其他解决方案吗? 问题答案: 唯一的其他解决方案是实现Externalizable。