我正在从网站获取JSON字符串。我有看起来像这样的数据(JSON数组)
myconf= {URL:[blah,blah]}
但有时这些数据可以是(JSON对象)
myconf= {URL:{try}}
也可以是空的
myconf= {}
我想在对象时做不同的操作,在数组时做不同的操作。到现在为止,在我的代码中,我只尝试考虑数组,所以我遇到了异常。但是我无法检查对象或数组。
我正在关注异常
org.json.JSONException: JSONObject["URL"] is not a JSONArray.
任何人都可以建议如何解决它。在这里,我知道对象和数组是JSON对象的实例。但是我找不到可以用来检查给定实例是数组还是对象的函数。
我尝试使用此if条件,但没有成功
if ( myconf.length() == 0 ||myconf.has("URL")!=true||myconf.getJSONArray("URL").length()==0)
JSON对象和数组分别是JSONObject和的实例JSONArray。再加上这一事实JSONObject有一个get,将返回你的对象,你可以检查自己的类型,而无需担心ClassCastExceptions异常,并有亚去的方法。
JSONObject
JSONArray
get
if (!json.isNull("URL")) { // Note, not `getJSONArray` or any of that. // This will give us whatever's at "URL", regardless of its type. Object item = json.get("URL"); // `instanceof` tells us whether the object can be cast to a specific type if (item instanceof JSONArray) { // it's an array JSONArray urlArray = (JSONArray) item; // do all kinds of JSONArray'ish things with urlArray } else { // if you know it's either an array or an object, then it's an object JSONObject urlObject = (JSONObject) item; // do objecty stuff with urlObject } } else { // URL is null/undefined // oh noes }