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

2024-01-06

我正在访问一项服务,有时会得到这样的结果:

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

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

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


简单的Java:

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

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


无论如何,根据结果集大小返回 JSON 对象或 JSON 对象数组的 API ……设计得很糟糕。最好是always返回一个 JSON 数组;例如包含零个、一个或多个对象的数组。这避免了我们在这个问题中必须处理的客户端混乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JSON-simple (Java) 判断返回是 JSONObject 还是 JSONArray? 的相关文章

随机推荐