Android 无法将类型为org.json.JSONArray的0转换为JSONObject

Android 无法将类型为org.json.JSONArray的0转换为JSONObject,android,json,android-asynctask,Android,Json,Android Asynctask,我将值存储在JSON url中,并解析JSON中的值,然后显示在应用程序中。我使用异步任务从JSONArray获取值并显示在列表中。当我从服务器获取值时,我得到了错误,json值是 [{"name":"John","uuid":"B9407F30-F5F8-466E-AFF9-25556B57FE6D","major_id":"67889","minor_id":"7032","notification":"Welcome","type":"Website","website":"estimot

我将值存储在JSON url中,并解析JSON中的值,然后显示在应用程序中。我使用异步任务从JSONArray获取值并显示在列表中。当我从服务器获取值时,我得到了错误,json值是

[{"name":"John","uuid":"B9407F30-F5F8-466E-AFF9-25556B57FE6D","major_id":"67889","minor_id":"7032","notification":"Welcome","type":"Website","website":"estimote.com"}]
日志:

代码:

受保护的Void doInBackground(Void…arg0){
//创建服务处理程序类实例
ServiceHandler sh=新的ServiceHandler();
//向url发出请求并获得响应
字符串jsonStr=sh.makeServiceCall(url,ServiceHandler.GET);
Log.d(“响应:”、“>”+jsonStr);
if(jsonStr!=null){
试一试{
//JSONObject jsonObj=新的JSONObject(jsonStr);
JSONArray jarray=新JSONArray(jsonStr);
jObject=jarray.getJSONObject(0);
Log.d(“jsonObj_响应:”,“>”+jarray);
//获取JSON数组节点
contacts=jObject.getJSONArray(TAG_contacts);
//通过所有触点循环
对于(int i=0;ivalue
联系人。放置(标签号,ID);
联系人:put(标签名称、姓名);
联系人:put(标签、专业id、电子邮件);
联系人:put(标签号、地址);
//将联系人添加到联系人列表
联系人列表。添加(联系人);
}
你错过了一个JSONArray

  JSONArray jarray = new JSONArray(jsonStr);
  for (int i = 0; i < jarray.length(); i++) {
        JSONArray innerArray = jarray.optJSONArray(i);
        for (int j = 0; j < innerArray.length(); j++) {
              jObject = innerArray.getJSONObject(j);
         }
  } 
JSONArray jarray=新的JSONArray(jsonStr);
for(int i=0;i
在OP编辑之后

  JSONArray jarray = new JSONArray(jsonStr);
  for (int i = 0; i < jarray.length(); i++) {
        JSONObject jobj = jarray.optJSONObject(i);
        if (jobj != null) {

        }
  }
JSONArray jarray=新的JSONArray(jsonStr);
for(int i=0;i
你错过了一个JSONArray

  JSONArray jarray = new JSONArray(jsonStr);
  for (int i = 0; i < jarray.length(); i++) {
        JSONArray innerArray = jarray.optJSONArray(i);
        for (int j = 0; j < innerArray.length(); j++) {
              jObject = innerArray.getJSONObject(j);
         }
  } 
JSONArray jarray=新的JSONArray(jsonStr);
for(int i=0;i
在OP编辑之后

  JSONArray jarray = new JSONArray(jsonStr);
  for (int i = 0; i < jarray.length(); i++) {
        JSONObject jobj = jarray.optJSONObject(i);
        if (jobj != null) {

        }
  }
JSONArray jarray=新的JSONArray(jsonStr);
for(int i=0;i
jObject=jarray.getJSONObject(0)是一个JSONArray,您的字符串在数组中有一个对象;)

jObject=jarray.getJSONObject(0)是一个JSONArray,您的字符串在数组中有一个对象;)

您有两个数组([[“/”]),所以“jObject=jarray.getJSONObject(0)”;“在转换”[{时失败”将名称“…estimote.com”}]”转换为JSONObject,但这是一个JSONArray。

您有两个数组(“[[”/“]]),因此“jObject=jarray.getJSONObject(0)”;“在尝试将“[{”name“…estimote.com”}”转换为JSONObject时失败,但这是一个JSONArray。

jarray[0]是一个JSONArray而不是JSONObject。

JSONarray不是JSONObject。

我的解决方案如下:

 JSONArray arr = new JSONArray(jsonStr);//Response string is here

for (int i = 0; i < arr.length(); i++) {
    JSONArray arr2 = arr.optJSONArray(i);
    for (int j = 0; j < arr2.length(); j++) {
          jObject = arr2.getJSONObject(0);
     }
 } 
JSONArray arr=newjsonarray(jsonStr);//响应字符串在这里
对于(int i=0;i
我的解决方案如下:

 JSONArray arr = new JSONArray(jsonStr);//Response string is here

for (int i = 0; i < arr.length(); i++) {
    JSONArray arr2 = arr.optJSONArray(i);
    for (int j = 0; j < arr2.length(); j++) {
          jObject = arr2.getJSONObject(0);
     }
 } 
JSONArray arr=newjsonarray(jsonStr);//响应字符串在这里
对于(int i=0;i
我得到了这个错误org.json.JSONException:at org.json.JSONOBJECT.get at org.json.JSONOBJECT.getjsonarray请检查编辑的json值..只有一个JSONarray,然后你只有一个for循环。你的
json
对象中没有任何contacts标记我得到了这个错误org.json.JSONException:a没有值t org.Json.JSONOBJECT.get at org.Json.JSONOBJECT.getJSONArrayPlease检查编辑的Json值..这只是一个JSONArraythen,您只有一个for循环。您的
Json
对象中也没有任何联系人标记