我正在访问一个服务,有时会返回这样的信息:
{ "param1": "value1", "param2": "value2" }
有时会得到这样的返回:
[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]
我怎么知道我得到的是哪一个?当我执行 getClass() 时,它们都评估为 String 但如果我尝试这样做:
json = (JSONObject) new JSONParser().parse(result);
在第二种情况下我得到一个异常(exception)
org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
如何避免这种情况?我只想知道如何检查我要回来的。 (第一种情况有时会包含 []
,所以我不能做索引,我想要一种比只检查第一个字符更简洁的方法。
一定有某种方法可以检查这个?
最佳答案
简单的 Java:
Object obj = new JSONParser().parse(result);
if (obj instanceof JSONObject) {
JSONObject jo = (JSONObject) obj;
} else {
JSONArray ja = (JSONArray) obj;
}
如果您想避免解析错误类型的 JSON 的开销,您还可以测试(声称的)JSON 是否以 [
或 {
开头。但要小心前导空格。
关于java - 如何使用 JSON-simple (Java) 判断返回值是 JSONObject 还是 JSONArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410421/