11

我正在打一项服务,有时会得到这样的东西:

{ "param1": "value1", "param2": "value2" }

有时会得到这样的回报:

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]

我怎么知道我得到了什么?当我执行 getClass() 时,它们都评估为 String 但如果我尝试这样做:

json = (JSONObject) new JSONParser().parse(result); 

在第二种情况下,我得到一个例外

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject

如何避免这种情况?我只想知道如何检查我要回来的。(第一种情况有时会有[],所以我不能做索引,我想要一种比只检查第一个字符更干净的方法。

必须有某种方法来检查这个?

4

2 回答 2

22

简单的Java:

Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) {
    JSONObject jo = (JSONObject) obj;
} else {
    JSONArray ja = (JSONArray) obj;
}

如果您想避免解析错误类型的 JSON 的开销,您还可以测试(声称的)JSON 是否以 a[或 a开头。{但要小心前导空格。

于 2013-05-07T03:22:11.983 回答
1

虽然和上面类似,但它们不是 JSONParser 的默认构造函数。错误来了:构造函数 JSONParser() 未定义

改用这个

JsonElement jsonElement = new JsonParser().parse(jsonString);
if (jsonElement.isJsonArray()) {
    //Your Code
} else {
    //Your Code
}
于 2019-01-09T08:42:41.370 回答