如何检查JSON对象和数组

时间:2014-02-18 07:21:28

标签: android json

我有2个链接;它给出了json数据。我试图从使用asynTask的android中的相同活动的url中获取值。做了编码,直到将数据转换为字符串(存储在 jsonStr1 中)。但现在出现了问题。因为,在2个网址中: 一个以JSON对象开始 -

{    "contacts": [     {"id": "c200", "name": "Ravi Tamada"  },

                       { "id": "c201", "name": "Johnny Depp" }
                ]
 }

另一个用JSON数组开始 -

 [{"appeId":"1","survId":"1"}, 
   {"appeId":"2","survId":"32"}
  ]

现在我将如何为他们提供一个条件,无论是知道它的JSON数组还是对象? JSON数组是我知道的对象,但无法找到如何分离它们。我试过以下:

JSONObject jsonObj = new JSONObject(jsonStr1);
   if(jsonObj instanceof JSONArray){}

但是如果条件显示错误 - 不兼容的条件操作数类型JSONObject和JSONArray

4 个答案:

答案 0 :(得分:5)

您只需使用startsWith for String来检查字符串以{[

开头的位置
boolean isJsonArray = jsonResponse.startsWith("[");
if(isJsonArray){
   // Its a json array
}
else{
   // Its a json object
}

答案 1 :(得分:1)

您可以使用JSONTokener类,这是一个示例代码。

Object json = new JSONTokener(response).nextValue();
if (json instanceof JSONObject){
  JSONObject result = new JSONObject(response);
}
else if (json instanceof JSONArray){
    JSONArray resultArray = new JSONArray(response);
}

答案 2 :(得分:0)

制作jsonobject并调用你想要调用的地方

                    jsonobject = JSONfunctions
                    .getJSONfromURL("http://ampndesigntest.com/androidapi/CURRENTPROJECTDATA/textfiles/hotels");

        try {
            // Locate the array name in JSON
            jsonarray = jsonobject.getJSONArray("worldpopulation");

            for (int i = 0; i < jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                jsonobject = jsonarray.getJSONObject(i);
                // Retrive JSON Objects
                map.put("rank", jsonobject.getString("rank"));
                map.put("country", jsonobject.getString("country"));
                map.put("population", jsonobject.getString("population"));
                map.put("flag", jsonobject.getString("flag"));
            //    map.put("latlongitude", jsonobject.getString("latlongitude"));


                // Set the JSON Objects into the array
                arraylist.add(map);
            }
        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return null;

答案 3 :(得分:0)

您可以使用has(String)方法检查JSONObject是否包含主要联系人。

if(jsonOjbect.has("contacts") {
   ...
}
else {
   ...
}