Java 无法将org.json.JSONArray转换为JSONObject

Java 无法将org.json.JSONArray转换为JSONObject,java,android,json,Java,Android,Json,我不熟悉JSON,我得到了以下例外情况: org.json.JSONArray无法在try部分的第一行转换为JSONObject 请帮我取下这个。这是我的密码: try { JSONObject json = new JSONObject(strResponse); //Get the element that holds the internship ( JSONArray ) JSONArray name = json.names(); JSONArr

我不熟悉
JSON
,我得到了以下例外情况:

org.json.JSONArray无法在try部分的第一行转换为JSONObject

请帮我取下这个。这是我的密码:

try {   
    JSONObject json = new JSONObject(strResponse);

    //Get the element that holds the internship ( JSONArray )
    JSONArray name = json.names();
    JSONArray  internships = json.toJSONArray(name);

    //Loop the Array
    for(int i=0;i < internships.length();i++) {     
        Log.e("Message","loop");
        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject e = internships.getJSONObject(i);
        map.put("id",  String.valueOf("id"));
        map.put("title", "Title :" + e.getString("title"));
        map.put("company", "Company : " +  e.getString("company"));
        map.put("category", "Category : " +  e.getString("category"));
        mylist.add(map);
    } 
} catch(JSONException e) {
    Log.e("log_tag", "Error parsing data "+e.toString());
}

您可能应该将
json
初始化为
JSONArray

JSONObject json = new JSONObject(strResponse);
那么应该是:

JSONArray json = new JSONArray(strResponse);
但是,以下两种操作不起作用:

JSONArray name = json.names(); //.names() doesn't exist in JSONArray
JSONArray  internships = json.toJSONArray(name); // Is instead to be seen as
如果您只是更改循环,从
json
获取
JSONObject
(从而消除对
.names()
的依赖关系),那就可以了:

编辑:完整代码

try {   
    JSONArray internships = new JSONArray(strResponse);

    //Loop the Array
    for(int i=0;i < internships.length();i++) {     
        Log.e("Message","loop");
        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject e = internships.getJSONObject(i);
        map.put("id",  String.valueOf("id"));
        map.put("title", "Title :" + e.getString("title"));
        map.put("company", "Company : " +  e.getString("company"));
        map.put("category", "Category : " +  e.getString("category"));
        mylist.add(map);
    } 
} catch(JSONException e) {
    Log.e("log_tag", "Error parsing data "+e.toString());
}
试试{
JSONArray实习=新JSONArray(strResponse);
//循环数组
对于(inti=0;i
问题:

 JSONObject json = new JSONObject(strResponse);

在这里,
strResponse
的格式可能是
JSONArray
,因此在将其转换为
JSONObject
时会出现此异常。试试这个,您的第一个块是json数组,所以请获取第一个json数组

JSONArray jsonarray = new JSONArray(strResponse);

    for(int i=0;i < jsonarray .length();i++) {
    JSONObject jsonobj = new JSONObject(i);
            map.put("id",   jsonobj .getString("id"));
            map.put("title",  jsonobj .getString("title"));
            map.put("company",  jsonobj .getString("company"));
            map.put("category",  jsonobj .getString("category"));
            mylist.add(map);

         }
JSONArray JSONArray=新的JSONArray(strResponse);
for(int i=0;i
如果这确实是您收到的json,您应该替换整个json:

JSONObject json = new JSONObject(strResponse);

//Get the element that holds the internship ( JSONArray )
JSONArray name = json.names();
JSONArray  internships = json.toJSONArray(name);

这个

应该是

JSONArray jsonarray = new JSONArray(strResponse);
[
表示json数组节点

{
表示json对象节点

for(int i=0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String id       = jsonobject.getString("id");
    String title    = jsonobject.getString("title");
    String company  = jsonobject.getString("company");
    String category = jsonobject.getString("category");
}
for(int i=0;i
发布您的完整堆栈traceNo问题@user2545272!如果它解决了您的问题,请不要忘记将其标记为答案。:-)@lvo hi我也有同样的问题……你能告诉我你是如何得到strResponse的值的吗…………谢谢你的解释,大多数例子中都有一个包含数组的对象,但不仅仅是数组本身,但这为我清除了构造函数JSONObject(int)之外的问题未定义?这应该是JSONObject JSONObject=jsonarray.getJSONObject(0);而不是JSONObject JSONObject=new JSONObject(i);@TarunVarshney是的,这是一个典型的错误。现在已纠正。好吧,我的按钮
JSONArray  internships = json.toJSONArray(strResponse);
JSONObject json = new JSONObject(strResponse);
// your strResponse is a json array 
JSONArray jsonarray = new JSONArray(strResponse);
for(int i=0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String id       = jsonobject.getString("id");
    String title    = jsonobject.getString("title");
    String company  = jsonobject.getString("company");
    String category = jsonobject.getString("category");
}