我正在访问一个服务,有时会得到如下内容:
{ "param1": "value1", "param2": "value2" }有时会得到这样的结果:
[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]我怎么知道我得到的是哪一个?当我执行getClass()时,它们的计算结果都是一个字符串,但如果我尝试这样做:
json = (JSONObject) new JSONParser().parse(result); 在第二种情况下,我得到了一个异常
org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject如何避免这种情况?我只想知道如何检查我要返回的是哪一个。(第一种情况有时会有[],所以我不能做索引,我想要一种比只检查第一个字符更干净的方式。
一定有某种方法来检查这一点?
发布于 2013-05-07 11:22:12
简单的Java:
Object obj = new JSONParser().parse(result);
if (obj instanceof JSONObject) {
JSONObject jo = (JSONObject) obj;
} else {
JSONArray ja = (JSONArray) obj;
}如果您想避免解析错误类型的JSON的开销,还可以测试(所谓的) JSON是以[还是以{开头。但要注意前导空格。
发布于 2019-01-09 16:42:41
虽然它与上面的类似,但它们不是JSONParser的默认构造函数。出现的错误是:构造函数JSONParser()未定义
改用这个
JsonElement jsonElement = new JsonParser().parse(jsonString);
if (jsonElement.isJsonArray()) {
//Your Code
} else {
//Your Code
}https://stackoverflow.com/questions/16410421
复制相似问题