将JSONObject转换为JSONArray错误

时间:2016-04-11 13:37:50

标签: java android json

错误:

W/System.err﹕ org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject

W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:111)

W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:158)

W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:171)

代码:

在try块中

            post.setEntity(new UrlEncodedFormEntity(data_to_send));
            HttpResponse httpResponse = client.execute(post);

            HttpEntity entity = httpResponse.getEntity();
            String result = EntityUtils.toString(entity);


            JSONObject jsonObject = new JSONObject(result);

            if(jsonObject.length() == 0)
            {
                retunedContact = null;

            }
            else
            {
                String name,email;
                name = null;
                email=null;

                if(jsonObject.has("name"))
                    name = jsonObject.getString("name");
                if(jsonObject.has("email"))
                    email =jsonObject.getString("email");

                retunedContact = new Contact(name , email , contact.username , contact.password);

            }


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

2 个答案:

答案 0 :(得分:0)

您的搜索结果似乎是JSONArray [..]而不是JSONObject,而不是{..}

而不是JsonObject使用JsonArray,例如:

try {
    JSONArray myJsonArray = new JSONArray(result);
} catch (JSONException e) {
    // log Error
}

答案 1 :(得分:0)

我认为您从api获得的格式是

[
  {
     "somekey":"somevalue",
     "somekey2":"somevalue2"
  },

  {
     "somekey":"somevalue",
     "somekey2":"somevalue2"
  }
]

那么你应该知道这种格式是JSONArray而不是JSONObject。所以,最好尝试这个代码

JSONParser parser = new JSONParser() 
JSONObject jsonObject = (JSONArray)parser.parse(result);

try {
    JSONArray obj_JSONArray= new JSONArray(result);
} catch (JSONException e) {
    e.printStackTrace();
}