java - 如何使用 JSON-simple (Java) 判断返回值是 JSONObject 还是 JSONArray?

标签 java json types json-simple

我正在访问一个服务,有时会返回这样的信息:

{ "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/

相关文章:

javascript - 表示静态 JSON 配置文件中的动态路径变量

c - 了解 C 中的 double 运算

java - 什么是 Resteasy 3.X PreProcessInterceptor 的正确替代品?

java - 如何在JPanel上画圆? Java 2D

java - ListActivity - 列表未显示

javascript - 动态更新JSON数据

java - 通过代码了解OOP中的封装

javascript - 如何使用特定路径对 JSON 进行字符串化?

java - 为什么我可以将 int 数据类型中的十进制数字添加到字符串中,而无需进行数据类型转换

typescript - 为什么两个接口(interface)的联合与联合的接口(interface)不同(具体涉及我下面的示例)?